git - rebase废墟合并

loo*_*oop 6 git git-merge git-rebase

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

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

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

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

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

wil*_*ler 9

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

您可以使用保留合并

git rebase --preserve-merges
Run Code Online (Sandbox Code Playgroud)

但也有一些问题,结合--preserve-merges--interactive.小心翼翼.