Git 将某个提交合并到另一个分支

2,396 阅读1分钟

开发中有时需要将一个分支某些提交合并到另一个分支

例如现在要将 B 分支的一个 commit 合并到A分支:

首先切换到B分支
git checkout B
查看提交日志
git log
找出要合并的 commit ID
如:2c2f06d4d03e7e0b246b1c9c66d
然后切换到A分支上进行合并
git checkout A
git cherry-pick  2c2f06d4d03e7e0b246b1c9c66d

这样就将B分支的某个commit记录合并到了A分支了

注: 说一下自己在使用 cherry-pick时候产生的效果
第一种情况

如果在 B 分支中,对某个文件有多次提交记录 A 分支使用 cherry-pick 进行合并的时候,会把之前对该文件的修改一并合并过来

// B.txt B 分支
1111(第一次commit2222(第二次commit3333(第三次commit

A 分支只合并 B 分支第三次 commit的记录,会把前面的修改也合并过来,合并结果如下

// B.txt A 分支
1111
2222
3333

我设想的是 A 只出现第三次提交的内容 但是不是 B 分支之前的内容全都有

第二种情况

比较符合预期,在没有对某个文件多次修改commit的情况下,只会合并对应的 commit 记录

目前还没有查找到关于出现这两种情况的原因,如果有知道的大佬,还希望在评论区指点一下