赞
踩
最近在进行系统的多版本并行开发,涉及一些共有基础功能提交时就遇到了麻烦,一份代码需要向多个版本分支进行同步,以保证多版本都能有更新该基础功能。
多次对比提交的方式显然会带来巨大的工作量。但实际上我们可以通过git的cherry-pick指令来简化操作
cherry-pick 其作用就是将其他分支的单个提交合并到当前分支,其名字也很贴合——“摘樱桃”,从分支树上摘下来指定的几颗。
其应用场景包括:
合并单个提交:当我们只想将某个分支上的某一次提交合并到当前分支时,可以使用cherry-pick命令,而不需要合并整个分支
修复bug:当我们在一个分支上修复了一个bug,并希望将这个修复同步应用到其他分支时
共性功能:当我们在一个分支上开发了一个新功能,这个功能可能属于基础性通用功能,也希望应用到其他版本时
1、首先为了模拟操作,我这里创建了两个分支:feature-v1.0, feature-v2.0。我们需要模拟的场景是:
- 在v1.0版本中开发并提交了一次通用功能
- 需要将v1.0提交的这次通用功能合并到v2.0版本中
我们首先在v1.0中模拟一次代码提交
2、然后右下角将分支切换到v2.0
3、点击左下角的Git选项,打开git提交历史,并在菜单左侧选中来源分支,即v1.0
4、找到我们要合并的提交,并选中,然后点击窗口中的樱桃图标,或者右键菜单中点击Cherry-Pick
,如果需要合并多次提交的话,就都选中然后点击cherry-pick即可
5、成功合并后会看到提示信息
6、需要注意的是,如果前面选择的分支是本地分支,那么还要将合并的代码提交到远端分支
7、合并后,我们就可以在本地以及远端分支都看到这次提交的代码了
1、首先进入到项目目录下,切换分支到来源分支v1.0
git checkout feature-v1.0
然后执行git log
指令,查看历史提交记录
2、每次提交都有一个唯一的hash标识,找到你想要合并的那次提交,复制其hash
hash如:4bfc117cd967eaa56e0835847e901becf3787b25
3、切换到目标分支
git checkout feature-v2.0
4、执行cherry-pick指令,其指令语法如下,其中commit表示某次提交的hash值或者分支名,如果是分支名会将这个分支的提交都合并过去
git cherry-pick <commit>
如果需要合并多次,就将hash值用空格隔开即可
git cherry-pick hash1 hash2 hash3
我们将之前复制的hash值贴过来执行
git cherry-pick 4bfc117cd967eaa56e0835847e901becf3787b25
如此代码就合并过来了
5、当然这里还只是提交到本地分支,如果要提交到远端的话,执行git push
推送即可
如上,我们就完成了针对某次提交的单独合并操作,实际操作时更加建议使用idea的可视化操作,毕竟可能会涉及到代码冲突,这时就需要我们手动解决冲突了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。