重新依赖主题分支

时间:2009-10-10 00:27:48

标签: git rebase

我在git中使用了很多本地主题分支,有时最终导致主题分支之间的依赖关系导致了rebase问题。例如,使用如下结构:

master ---> featureA ---> featureB
                     \--> featureC

如果master发生变化,并且在重新定位featureA时得到(并解决)冲突,那么之后将featureB重新定位到featureA会触发相同的冲突(有时会激发新的冲突)因为它试图从featureA分支重新应用补丁。假设featureAfeatureB之间的实际补丁如果采摘樱桃会干净利落,那么在这种情况下是否有一种方法可以做一个改变,与樱桃选择所有提交的效果大致相同featureAfeatureB

2 个答案:

答案 0 :(得分:17)

重新定位featureA后,您可以

git rebase --onto featureA oldFeatureA featureB

假设oldFeatureA表示在重新定位之前featureA的提示处的提交(您可以在那里保留另一个分支或只记住提交哈希)。

这应该基本上与将A和B之间的每次提交挑选到A的重新定位版本相同。

Documentation on git-rebase(包括对一些更复杂的rebase操作期间发生的事情的一些有用的图解说明)

答案 1 :(得分:6)

对于未来,如果您使用许多相互依赖的主题分支,也许您应该考虑使用TopGitREADME),一个使用Git主题分支管理补丁队列的工具,每个分支一个补丁;或者是管理多个主题分支的工具。

参见例如topgit Means Never Having to Wait for Reviews博文。