git如何在主干上合并分支的某一次提交
项目实际开发中经常会分出主干和分支,主干和分支扮演的角色往往不相同,主干的作用一般用于新功能开发后提交,分支用于修复缺陷提交,当新功能开发和修复缺陷比较多的时候,会使得主干和分支代码渐行渐远,这时候突然让你将分支上更改的某个缺陷(注意:不是分支上更改的所有缺陷)合并到主干上,这时候,你会怎么办呢?
最笨的一种办法就是在分支上将需要合并到主干的代码文件找出来,复制一份到主干下面,然后提交到主干上实现合并分支的某次提交;这种解决方法太不够优雅也容易出错;另一种高大上的方法就是使用git cherry-pick
命令,具体如下:
主干上合并分支的某次提交:
1、查询分支每次提交的信息,获取需要合并的提交id;
进入分支,通过git log --oneline -3
查询出分支最近3次提交的commitId,如果需要合并的提交不再最近3次中,可以通过更改数字3来获取需要合并提交的commitId
2、切换到主干,git cherry-pick <commitId>
合并分支上commitId的提交
合并完成之后可能会出现以下三种情况:
1、最理想的结果,执行完git cherry-pick
命令,合并成功,不需要再执行任何操作,即可在主干提交记录中找到合并分支的提交;
2、执行完git cherry-pick
命令后,没有报错,但是在主干提交记录中也没有合并分支提交的记录,此时需要执行git push
将执行合并完后的代码推送到远程仓库;
3、执行完git cherry-pick
命令后出现报错提示有冲突,解决方法一:先解决冲突,然后再手动git commit
、git push
推送到远程仓库;或者解决方法二:执行git add .
,然后执行git cherry-pick --continue
继续完成合并;
总结:
上面详细讲述了使用git cherry-pick
命令如何实现在主干上合并分支的某次提交,同样的我们也可以按照上面的方法实现在分支上合并主干上的某次提交,实现在分支1上合并分支2的某次提交等等;具体实现过程可以总结如下:
-
1、获取待合并的提交id(
commitId
) -
2、在需要合并提交的分支上执行
git cherry-pick <commitId>
-
3、如果遇到问题请参照上面可能出现情况的解决方法来解决
好的建议:
为了更大发挥git cherry-pick
作用,在开发或修复缺陷时应该保持一个好的习惯就是及时提交,也就是一个新开发完成提交一次,一个缺陷修复完就提交一次,不要等到新开发和缺陷修复好后一起提交,这样导致每次提交不够独立,总之一句话:想要使用git cherry-pick
在不同分支间穿梭自如地合并某次提交,前提要保证每次提交内容的独立性。