我正在将git工作流用于开发分支和多个功能分支。有时,需要使用向后合并将功能分支更新到开发中的最新状态。很少有两个连续的向后合并(开发在合并之间收到新的提交)。
有时,将两个合并合并以简化历史是很有意义的,理想情况下,无需重做所有实际的合并工作。如何才能做到这一点?对于普通提交,我将使用git rebase HEAD^^ --interactive
并将后面的提交标记为fixup
,但是对于合并提交,这将显示合并带来的所有提交。
答案 0 :(得分:1)
好吧...。您的工作在技术上是可能的。...说,您只是注意到您连续有2个向后合并,并希望将它们压缩为一个合并....拍摄,可以这样完成(假设您正在功能分支上):
git checkout -b test $( git commit-tree -p HEAD~2 -p origin/develop -m "Merging develop" ${HEAD^tree} )
您在此处创建(并签出了一个)测试分支,该分支与HEAD修订版本具有相同的工作树,并且具有功能分支-2个修订版本(换句话说,是2个向后合并之前的最后一个修订版本)和开发。这样,您就可以得到想要的东西,而不必重做任何合并(也没有合并冲突)。
但是,当使用要素分支时,不需要进行向后合并。...(如果您问我)获取要素的直接故事要好得多分支,为此,您应该变基,而不是合并。您有3个修订版本。您重新设定基准,您将一次接一个获得3个修订...。您再编写2个修订,开发棋步?您再次调整基准,然后 still 一个接一个地获得5个修订。在查看的全部开发内容方面,这简化了很多工作,并且如果您希望将该开发移至其他分支(例如backport,por示例)的顶部,则也具有优势。