樱桃选择合并

时间:2008-10-24 07:41:36

标签: git version-control

假设分支B是分支A的主题分支,并且您希望分支C中的那些更改。当您选择分支A和分支B的合并提交到分支C时,它是什么意思?

例如,如果你使用-m标志来指定分支A的旧HEAD来挑选合并到分支C,那么这只是意味着“在樱桃挑选的提交树和旧的HEAD之间取差异分支A并将其应用于分支C?“

使用此方法有任何问题吗? (例如,分支C看起来是否会合并到分支A和B?是否会应用更多更改而不仅仅是来自分​​支B的提交?)

1 个答案:

答案 0 :(得分:10)

我通常这样做的方法是使用git rebase

git rebase --onto C A B

这将获取A和B之间的差异,并将这些差异应用于分支C.作为奖励,rebase将跳过A和B之间执行与分支C中已存在相同的文本更改的任何提交。

更新:如果您在评论中提到过,请记住Git永远不会覆盖过去的历史记录。因此,即使在执行上面的rebase之后,您也可以在提交时重新创建一个新的分支头,其中B曾经在rebase之前。不幸的是,在早上的这个时候,我想不出一个简单的方法。对不起,我无法提供更多帮助,也许其他人会想出一个简单的方法!