目前我有这个复杂的合并提交树:
* 36cd4ff merge commit to rebase 12 (master,origin/master,HEAD)
|\
| * f8d22cf merge commit to rebase 11
| |\
| | * 4381ba4 merge commit to rebase 10
| | |\
| | | * c81227f commit to rebase 9
| * | | d16e5ca commit to rebase 8
* | | | c277df7 good 7
* | | | e712ceb good 6
|/ / /
* | | 80e3baa good 5
* | | 1559030 good 4
|/ /
* | e8bf45c good 3
* | 4ca2d92 good 2
|/
* d43f5ac good 1
我想要这样的东西(用git push --force
重写干净的历史记录):
* 36cd4ff merge commit to rebase 12
* f8d22cf merge commit to rebase 11
* 4381ba4 merge commit to rebase 10
* c81227f commit to rebase 9
* d16e5ca commit to rebase 8
|
* c277df7 good 7
* e712ceb good 6
* 80e3baa good 5
* 1559030 good 4
* e8bf45c good 3
* 4ca2d92 good 2
* d43f5ac good 1
如果我执行git rebase -i HEAD~6,则只显示这些提交:
pick 80e3baa good 5
pick e712ceb good 6
pick c277df7 good 7
pick d16e5ca commit to rebase 8
pick c81227f commit to rebase 9
pick 4381ba4 merge commit to rebase 10
这些提交已经消失了吗?
* f8d22cf merge commit to rebase 11
* f8d22cf merge commit to rebase 11
迄今为止唯一有效的“解决方案”是克隆存储库并从中开始
c277df7 good 7
,从源代码库复制文件并进行提交。
答案 0 :(得分:0)
如果你重新绑定,你用rebase解决所有的合并冲突..所以你不需要单独的merge-commits ..所以首先 - 恢复你所有的merge-commits然后尝试以下:
直到“好7”你有一个直接的提交行,之后你必须将每个提交放在树的顶部(以7为基础)
将rebase 8放在rebase 7之上:
git rebase c277df7 d16e5ca
然后将9放在8:
git rebase d16e5ca c81227f
解决所有合并冲突(你可能需要做其他提交或修改你的提交)
在你做任何事情之前,我建议你通过制作文件夹的副本来备份回购(你可以用git reflog回放所有内容,但有时副本更容易)
祝你好运编辑:如果你不想丢失“merge-commits”那么你可以通过做rebase d16e5ca 36cd4ff(当然是第一次rebase之后)在commit 8之上重新整理“merge-commit-branch”< / p>