假设分支B是分支A的主题分支,并且您希望分支C中的那些更改。当您选择分支A和分支B的合并提交到分支C时,它是什么意思?
例如,如果你使用-m标志来指定分支A的旧HEAD来挑选合并到分支C,那么这只是意味着“在樱桃挑选的提交树和旧的HEAD之间取差异分支A并将其应用于分支C?“
使用此方法有任何问题吗? (例如,分支C看起来是否会合并到分支A和B?是否会应用更多更改而不仅仅是来自分支B的提交?)
答案 0 :(得分:10)
我通常这样做的方法是使用git rebase
:
git rebase --onto C A B
这将获取A和B之间的差异,并将这些差异应用于分支C.作为奖励,rebase将跳过A和B之间执行与分支C中已存在相同的文本更改的任何提交。
更新:如果您在评论中提到过,请记住Git永远不会覆盖过去的历史记录。因此,即使在执行上面的rebase之后,您也可以在提交时重新创建一个新的分支头,其中B曾经在rebase之前。不幸的是,在早上的这个时候,我想不出一个简单的方法。对不起,我无法提供更多帮助,也许其他人会想出一个简单的方法!