我在git中使用了很多本地主题分支,有时最终导致主题分支之间的依赖关系导致了rebase问题。例如,使用如下结构:
master ---> featureA ---> featureB
\--> featureC
如果master
发生变化,并且在重新定位featureA
时得到(并解决)冲突,那么之后将featureB
重新定位到featureA
会触发相同的冲突(有时会激发新的冲突)因为它试图从featureA
分支重新应用补丁。假设featureA
和featureB
之间的实际补丁如果采摘樱桃会干净利落,那么在这种情况下是否有一种方法可以做一个改变,与樱桃选择所有提交的效果大致相同featureA
和featureB
?
答案 0 :(得分:17)
重新定位featureA
后,您可以
git rebase --onto featureA oldFeatureA featureB
假设oldFeatureA
表示在重新定位之前featureA
的提示处的提交(您可以在那里保留另一个分支或只记住提交哈希)。
这应该基本上与将A和B之间的每次提交挑选到A的重新定位版本相同。
Documentation on git-rebase(包括对一些更复杂的rebase操作期间发生的事情的一些有用的图解说明)
答案 1 :(得分:6)