gitlab介绍
GitLab
是一个基于Git
的在线代码托管和协作平台,提供源代码管理、单元测试、CI/CD
构建、代码审查等功能。它是一个开放源代码的Git
仓库管理系统,使用Ruby on Rails
构建GitLab
不仅具有自己的Git
仓库管理系统,还具有很多其他的功能,如审计日志、代码合并、CI/CD
流水线、问题跟踪等。它支持公共和私有仓库,可以自己搭建也可以使用GitLab
的SaaS
服务GitLab
使用简单,功能强大,被广泛应用于企业和开源社区。GitLab
也提供了丰富的API
和Webhooks
接口,使得用户可以方便地将GitLab
与其他系统进行集成Gitlab
官网提供了gitlab.com
的SaaS
服务,用户可以直接注册并使用,但是需要注意的是官网服务是收费的。自部署Gitlab
则需要用户自己搭建gitlab
实例,用户需要下载gitlab
的开源代码,然后根据服务器配置和需求进行相应的安装和配置,需要使用者有一定的系统操作和管理经验。自部署gitlab
一般是免费的,但需要考虑到运维和维护的成本。一般研发经理或技术leader承担此项工作。
cherry-pick功能介绍
pick
的意思是“采摘”,cherry
的意思是“樱桃”,连在一起就是“摘樱桃”。所以该功能的意思就是“挑拣自己需要的提交”Gitlab cherry-pick
是从一个分支中提取单个提交并将其应用于其他分支的操作。这通常用于将特定更改(如修复错误或特定功能)应用于其他分支而不必将所有更改都合并。- 通过
Gitlab cherry-pick
,您可以在另一个分支中应用单个提交。这允许团队成员在需要时将已有的特定修补程序或修复应用于其他分支。 - 这可使您避免在每个分支中重复更改,从而增强了代码库的可维护性和代码重用性。
- 要使用
Gitlab cherry-pick
,您需要了解以下内容:- 1.要选择具体提交相应的
SHA(ID)
。 - 2.使用
Gitlab cherry-pick
命令将提交引入到其他分支中。 - 3.检查提交是否已成功应用于目标分支中。
- 1.要选择具体提交相应的
实际操作
首先,你需要在GitLab
上新建一个分支。
-
打开项目,点击“
Branch
”按钮,输入新分支名,点击“Create branch
”创建一个新分支。 -
克隆新分支到本地:
git clone [项目地址]
cd [项目名称]
git checkout -b [新分支名称] origin/[新分支名称]
- 找到需要
cherry-pick
的提交,可以使用以下命令查看提交历史:
git log
- 执行
cherry-pick
命令,将提交应用到当前分支(新分支):
git cherry-pick [提交ID]
- 如果涉及到冲突,需要解决冲突后再提交:
git add [文件名]
git cherry-pick --continue
- 如果需要
cherry-pick
多个提交,可以使用以下命令:
git cherry-pick [提交ID1] [提交ID2] ...
- 当
cherry-pick
完成后,需要将新分支推送到GitLab
:
git push origin [新分支名称]
这样就完成了 cherry-pick
部分更新到新分支的操作。
界面操作
-
如果不熟悉命令操作,
gitlab
有操作界面,在界面上操作也很方便 -
或者直接在
Intellij idea
之类的可视化集成开发环境的界面里操作,也很方便 -
下面以一次合并需求和在
Intellij idea
操作为例,讲解一下。 -
需求场景:研发的产品基础版已归档和推向市场使用,高级版功能开发还在进行中。高级版的功能开发,各个开发人员提交合并请求,合并到主线。此时市场客户提出一个新需求,我们需要进行代码变动和新增,考虑到系统的稳定性,这么多新功能代码肯定不能直接部署给客户使用,完整的再对整个系统走一遍测试流程,在人力和时间成本上吃不消。所以针对客户的更新部署版本,只是原有基础版功能,加上这个客户提出的新功能,其他功能代码要排除出去。
-
解决办法:针对基础版归档时间点,单独建立一个新分支作为基础版归档,然后使用
cherry-pick
功能,把客户提出的新功能的开发的代码的提交记录,按照时间顺序,一个个pick
到本分支,再一起提交即可。 -
在主分支,根据归档时间,选择对应的提交记录,右键,建立新分支(因为我已经操作过了,所以这里多了一个分支标志)
-
右下角可以找到新加的分支名称,点击,在弹出框里点击提交
Push...
,提交新分支到gitlab
仓库。
-
推送到仓库后,新分支就建立成功了,可以去
cherry-pick
提交了,从下往上找,把自己需要的bug
修复和某个功能的代码提交,右键,挨个pick
即可,如果有代码冲突手动处理下
-
这里的关键,是要求代码开发人员提交代码时,描述要写的很清晰,一次提交只针对某一块功能,而且新功能代码大多比较独立。如果提交描述不清晰,或者提交内容与描述不符,或者代码都糅杂在一起、独立性很差,使用这个功能就会很费劲了,需要人工合并和删除不需要的代码
-
所有需要的提交都
pick
完,提交推送到仓库即可,新的版本和功能就完成了,剩下的打包交给测试人员吧