回退一个交互式的git rebase

40
在完成一个特性分支后,在进行git rebase -i时,我不小心删除了所有提交。我不是完全确定,但我怀疑我替换了整个条目的提交信息,而不是将我的提交合并成一个。 http://shafiulazam.com/gitbook/4_interactive_rebasing.html说:
引用:

交互式rebase的另一个有用功能是可以为您删除提交。如果您只需删除提交行,而不是选择“pick”、“squash”或“edit”,它就会将提交从历史记录中删除。

我的问题是:有没有一种方法来撤销/恢复这个操作?
2个回答

81

如果您刚刚完成了rebase,您可以尝试按照这里提到的方法

git reset --hard ORIG_HEAD

根据Jakub Narębski详细说明

ORIG_HEADHEAD的先前状态,由可能有危险行为的命令设置,以便轻松恢复它们。
随着Git现在具有引用日志,它变得不那么有用了: HEAD@{1}大致相当于ORIG_HEADHEAD@{1}始终是HEAD的最后一个值,ORIG_HEAD是危险操作之前HEAD的最后一个值)。

如果您在rebase之后执行了一些操作,则引用日志仍然可以帮助您


17

您可以使用 "git reflog" 命令获取旧的 HEAD。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接