git - rebase废墟合并

时间:2012-10-19 02:48:33

标签: git git-merge git-rebase

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

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

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

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

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

1 个答案:

答案 0 :(得分:9)

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

您可以使用

保留合并
git rebase --preserve-merges

但将--preserve-merges--interactive合并存在一些问题。小心翼翼。