6

我有两个独立的分支。我在一个多月的不同时间点对它们进行了研究。我通过检查橙色并做将一个分支(让我们称之为apple)合并到另一个(让我们称之为) ,一切都很顺利。在 gitk 中,我可以清楚地看到每个分支都有自己的历史记录,并且在橙色的合并提交中合并在一起。 orangegit merge --no-ff apple

后来我意识到橙色的提交是不正确的,构建过程中有一个错误,我必须编辑橙色的早期提交。我使用git rebase -i HEAD~19,选择提交并更改pickedit. 所以我编辑了提交,一切都很好,我完成了变基。我回到 gitk,这两个分支的所有历史都是橙色的线性历史。

那么我是不是搞砸了,或者这就是它应该的方式?我使用 git reflog 回到我做合并的时候,然后我做了另一个重置,很难回到橙色合并之前,然后我做了 rebase 并修复了那个提交,然后我做了合并。现在一切看起来都像我期望的那样,来自分支的提交没有交错在一起。

为了将来的参考,有人可以告诉我如何在我已合并到另一个分支的分支上重新提交提交,而不会以交错提交(线性历史)结束?

如果我的术语不正确,请随时编辑。再次感谢

4

1 回答 1

9

这是变基的预期行为。它有效地重写了分支的历史,这导致它(默认)丢失合并和其他元数据,留下一个直接的、简化的分支。

您可以通过使用保留合并

git rebase --preserve-merges

--preserve-merges但与结合存在一些问题--interactive。小心行事。

于 2012-10-19T05:15:48.040 回答