在StackOverflow上有一些与“展平合并”有关的问题,通常的答案是使用“git rebase”,但是这些答案忽略了一个至关重要的点——提交顺序。
假设有一个分支A,其中有Jun 1和Aug 1两个提交,以及一个分支B,其中有一个Jul 1的提交(更新以恢复下面描述的用例:分支完全独立,没有共同祖先,例如来自两个不同的仓库)。将B合并到A时,将会出现以下历史记录(根据git log):
Merged branch 'B'
Aug 1
Jul 1
Jun 1
现在,我想找到一种方法来获得相同的结果,但不需要合并提交(因此以线性历史顺序呈现,并且是重新父级提交)。 Git rebase在这里无法帮助,因为使用它,您将得到以下历史记录:
Jul 1
Aug 1
Jun 1
或者Aug 1
Jun 1
Jul 1
换句话说,git rebase 总是将一个分支叠加在另一个分支之上,而我正在寻找一种按作者提交日期排序并插入提交的解决方案。显然,对于简单情况,可以通过手动使用 git rebase -i 进行后处理来实现所需排列顺序,但对于较大的历史记录,这不太实用,因此我正在寻找自动化的命令/脚本。用例?如果 A 和 B 分别代表同一项目的不同部分,它们恰好位于不同的仓库中,并且现在需要通过合并将它们相互结合起来,则希望以实际开发顺序展开线性历史记录是很自然的。