16

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

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

如果更改并且我在masterrebase 时遇到(并解决)冲突featureA,那么之后 rebase to 会触发相同的冲突(有时也会触发新的冲突),因为它会尝试重新应用分支中的补丁。假设如果选择了 和 之间的实际补丁将干净地应用,有没有办法在这种情况下进行变基,其效果与选择 和 之间的所有提交大致相同?featureBfeatureAfeatureAfeatureAfeatureBfeatureAfeatureB

4

2 回答 2

18

变基后featureA,你可以做

git rebase --onto featureA oldFeatureA featureB

假设oldFeatureA表示在你重新设置它之前的尖端提交featureA(你可以在那里保留另一个分支,或者只记住提交哈希)。

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

关于 git-rebase 的文档(包括一些有用的图形解释,说明在一些更复杂的 rebase 操作期间会发生什么)

于 2009-10-10T00:33:32.617 回答
6

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

参见例如topgit 意味着永远不必等待评论博客文章。

于 2009-10-10T07:38:05.100 回答