repo是交互式的,它基本上将所有东西重新组合成一个线性分支,并且摆脱了合并提交和分支。
有没有办法在使用像这样的交互式rebase展平历史记录后恢复合并提交?
这些变化已经被推动了。
我认为使用分支过滤的东西应该可以解决这个问题,但不能完全理解它。
答案 0 :(得分:1)
首先,"撤消"做了什么:
git reflog
将提供历史HEADS列表(例如,当前的SHA'是什么)。参与rebase的每个单独的SHA,包括在发生任何变基之前的那个,应该仍然在某个地方(假设它们没有过期)。
在发生任何变基之前找到"" SHA并命名它(git GUI查看器,如gitk
,或GitKraken可能会有帮助):
git branch before-rebase-flattening <SHA>
现在,重做你的rebase,但--preserve-merges
。使用新的分支,以免弄乱你的&#34;备份&#34; before-rebase-flattening
分支:
git checkout before-rebase-flattening
git checkout -b rebase-attempt
git rebase -ip <whatever you did before>
如果在任何时候,你搞砸了并想重试rebase:
git rebase --abort
如果您的rebase成功并且rebase-attempt
是您喜欢的方式,那么请将原始分支移至rebase-attempt
的SHA,并清理rebase分支:
git checkout <your original branch>
git reset --hard rebase-attempt
git branch -D rebase-attempt
git branch -D before-rebase-flattening