Cherry-pick 合并提交失败,提交为空

Cherry-pick merge commit failing with empty commit

我有几个分支,我希望第二个分支的更改出现在第一个分支中。

最好用图表来描述它:

          X - Y - Z    (branch-2)
         /         \
A - B - C - D - E - F  (master)
 \     
  G - H - I            (branch-1)

我想将XYZ合并成branch-1而不带BC

我尝试挑选合并提交 F,尽管我指定了正确的父项(我认为),但挑选失败并显示:The previous cherry-pick is now empty, possibly due to conflict resolution.

我应该挑选 X^..Z 范围吗?或者有更好的方法吗?

如果 branch-2 很小,一个一个地挑选可能是一个解决方案。

要移动较大的分支,我会这样做:

git checkout branch-2
git branch   moving/branch-2 # new branch to work with
git rebase --onto  branch-1 [sha_of_c] moving/branch-2 # move commits of branch ontop of the other 
git checkout branch-1 
git reset --hard  moving/branch-2 # set branch lable to new HEAD
git branch -d  moving/branch-2 # clean up

正如 @quetzalcoatl 在评论中所建议的那样,您可以将 -i switchch 与 rebase 一起使用,这样您就可以检查是否正在复制正确的提交在真正这样做之前。

另一方面,如果出现问题,您只需将 moving/branch-2 恢复为 branch-2 并重新开始。