合并分支的交互式Rebase

Ido*_*Ran 8 git git-rebase

我正在使用git而且我正处于这种状态:

      X --- Y --------- M1 -------- M2 (my-feature)
     /                 /           /
    /                 /           /
   a --- b --- c --- d --- e --- f (stable)
Run Code Online (Sandbox Code Playgroud)

当我们在'my-feature'分支上工作超过一天时就会发生这种情况.从稳定分支到特征分支合并M1和M2.M1和M2可能已合并已解决的冲突.将稳定分支合并到特征分支的整个想法是尽早处理冲突.

功能完成后,我们希望将功能分支重新绑定为一个或两个提交.

问题是当我们进行交互式rebase git向我们展示我们在M1和M2合并期间已经解决的相同合并冲突.

有没有办法让git重用我们在M1和M2中已经完成的合并决策?

Chr*_*her 10

如果合并冲突是相同的,那么这是一个完美的用例git rerere,它是git中最有用的(尽管鲜为人知的)命令之一.从手册页:

在使用相对长寿命的主题分支的工作流中,开发人员有时需要反复解决相同的冲突,直到主题分支完成(或者合并到"发布"分支,或者发送并接受上游).

此命令通过在初始手动合并中记录冲突的自动登记结果和相应的手部解析结果,并将先前记录的手部分辨率应用于其相应的自动登记结果,来帮助开发人员完成此过程.

git rerere让您的解决冲突的记录,并在遇到相同的冲突时,它们会自动适用git merge,git rebasegit commit(提交合并时).斯科特·查孔发布了一些很好的例子,在这里,手册页也值得一读.

您可以启用git rereremerge,并rebase通过发出以下命令:

git config --global rerere.enabled true
Run Code Online (Sandbox Code Playgroud)

--global如果您希望仅为单个存储库启用该选项,请删除该标志.


for*_*dya 6

git rebase --interactive --preserve-merges

  • 有没有在保留合并的同时编辑旧提交的解决方法? (2认同)