假设分支 B 是分支 A 的主题分支,而您希望在分支 C 中进行这些更改。当您挑选分支 A 和分支 B 的 merge 提交到分支 C 时,这意味着什么?
例如,如果您使用 -m 标志指定分支 A 的旧 HEAD 以挑选 merge 到分支 C,这是否仅仅意味着“在挑选的提交树和旧 HEAD 之间进行比较”分支 A 应用到分支 C?”
使用这种方法有什么陷阱吗? (例如,分支 C 看起来像是 merge 到分支 A 和 B 吗?是否会应用更多的更改,而不仅仅是来自分支 B 的提交?)
最佳答案
我通常这样做的方式是使用 git rebase
:
git rebase --onto C A B
这会获取 A 和 B 之间的差异,并将这些差异应用到分支 C。作为奖励,rebase 将跳过 A 和 B 之间执行与分支 C 中已存在的相同文本更改的任何提交。
更新:对于您在评论中提到的情况,请记住 Git 永远不会覆盖过去的历史记录。因此,即使在执行上面的 rebase 之后,您也可以在 rebase 之前 B 曾经所在的提交处重新创建一个新的分支头。不幸的是,我在早上的这个时候想不出一个简单的方法来做到这一点。抱歉,我帮不上什么忙,也许其他人会想出一个简单的方法!
关于git - 樱桃选择 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/232771/