简短回答:
git reset 'HEAD@{1}'
长答案:
Git保存所有ref更新的日志(例如,checkout、reset、commit、merge)。您可以通过键入以下内容来查看:
git reflog
在这个列表的某个地方是你丢失的承诺。假设你刚输入
git reset HEAD~
想撤销它。我的重新登录如下:
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
第一行写着
HEAD
0位置前(即当前位置)是3f6db14;通过重置为
HEAD~
. 第二行说
头部
1位置ago(换言之,重置前的状态)是d27924e。它是通过签出一个特定的提交(尽管这现在并不重要)获得的。所以,要撤消重置,运行
git reset HEAD@{1}
(或
git reset d27924e
).
另一方面,如果从那以后您运行了一些其他命令,那么您想要的提交将不在列表的顶部,您需要搜索
reflog
.
最后一个注意事项:查看
重新记录
对于要取消重置的特定分支,例如master,而不是
头部
:
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
它的噪音应该比一般的小
HEAD reflog
.