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完,提交推送到仓库即可,新的版本和功能就完成了,剩下的打包交给测试人员吧
  







![学习open62541 --- [76] 使用智能指针处理内存释放问题](https://img-blog.csdnimg.cn/9e4908a8eb5d4a3b97ab33163835bcc2.png)











