我想撤消这个命令:
git reset HEAD~
最佳答案
简答:
git reset 'HEAD@{1}'
长答案:
Git 保留所有 ref 更新的日志(例如, checkout 、重置、提交、 merge )。您可以通过键入以下内容来查看它:
git reflog
此列表中的某处是您丢失的提交。假设您刚刚输入 git reset HEAD~
并想撤消它。我的 reflog 看起来像这样:
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
第一行说HEAD
0个位置之前(也就是当前位置)是3f6db14;它是通过重置为 HEAD~
获得的。第二行说 HEAD
1 个位置之前(换句话说,重置之前的状态)是 d27924e。它是通过检查一个特定的提交获得的(尽管现在这并不重要)。因此,要撤消重置,请运行 git reset HEAD@{1}
(或 git reset d27924e
)。
另一方面,如果您从那时起运行了一些其他命令来更新 HEAD,那么您想要的提交将不会在列表的顶部,您将需要搜索 重新记录
。
最后一点:查看您想要取消重置的特定分支的 reflog
可能更容易,比如 master,而不是 HEAD
:
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
这应该比一般的 HEAD reflog
有更少的噪音。
关于git - 如何撤消 'git reset' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2510276/