在这样的合并之后,您可能会在历史上两次精选提交。
防止这种情况的解决方案我引用了文章,该文章建议具有重复(樱桃采摘)提交的分支在合并之前使用 rebase:
git cherry-pick 之后的 git 合并:避免重复提交
假设我们有 master 分支和一个分支 b:
o---X <-- master
\
b1---b2---b3---b4 <-- b
现在我们迫切需要 master 中的 b1 和 b3 提交,而不是 b 中剩余的提交。所以我们要做的是检查 master 分支并选择提交 b1 和 b3:
$ git checkout master
$ git cherry-pick "b1's SHA"
$ git cherry-pick "b3's SHA"
结果将是:
o---X---b1'---b3' <-- master
\
b1---b2---b3---b4 <-- b
假设我们在 master 上再次提交,我们得到:
o---X---b1'---b3'---Y <-- master
\
b1---b2---b3---b4 <-- b
如果我们现在将分支 b 合并到 master 中:
$ git merge b
我们会得到以下信息:
o---X---b1'---b3'---Y--- M <-- master
\ /
b1----b2----b3----b4 <-- b
这意味着 b1 和 b3 引入的更改将在历史记录中出现两次。为了避免这种情况,我们可以变基而不是合并:
$ git rebase master b
这将产生:
o---X---b1'---b3'---Y <-- master
\
b2'---b4' <-- b
最后:
$ git checkout master
$ git merge b
给我们:
o---X---b1'---b3'---Y---b2'---b4' <-- master, b
编辑
大卫柠檬的评论所提出的更正