【发布时间】:2014-12-12 14:27:13
【问题描述】:
我的 git 分支如下所示:
master-*-*-*-*-*-*-implement_x
\ \-*-further_foo_fixes_that_depend_on_x
\ \-*-*-further_bar_fixes_that_depend_on_x
\
\-implement_x_rebased
它以这种方式结束,因为我认为我的分支 implement_x 将按原样合并到上游,但我被要求将其压缩为单个提交,因此 implement_x_rebased。但是,我已经启动了几个分支,用于进一步修复和开发取决于我的工作,同时等待 implement_x 合并。
现在我想在implement_x_rebased 基础上进行进一步的工作。我认为这是一个空操作,因为 implement_x 和 implement_x_rebased 处于完全相同的状态 - 不会有合并冲突,只需在 @987654330 之上应用 implement_x 和 further_foo_fixes_that_depend_on_x 等之间的更改@。然而,似乎 git 并不那么聪明,它试图从基础开始一直变基 - 引入了不必要的合并冲突。
我认为最简单的方法是 rebase&squash 对implement_x 的进一步修复,然后将它们存储起来,并将存储应用到implement_x_rebased,但我很好奇是否有任何适当的方法让 git 意识到 @ 987654333@和implement_x_rebased其实是同一个状态?
【问题讨论】:
-
我不知道这个问题的完美答案,但樱桃挑选也是一种选择。
-
啊。樱桃采摘绝对比手动应用一些差异更容易和更好。我仍在等待直接回答我的问题的答案,但如果暂时没有答案,我会接受。
-
请检查
git rev-parse implement_x^{tree} implement_x_rebased^{tree}看看这两个提交是否真的是相同的内容。
标签: git git-rebase