撤消git重置?
什么是最简单的方法来撤消
git reset HEAD~ 命令? 目前,我能想到的唯一方法就是从远程回购站点执行“git clone http:// …”。
简短的回答:
 git reset 'HEAD@{1}' 
很长的回答:
Git保存所有ref更新的日志(例如,checkout,reset,commit,merge)。 你可以通过input
 git reflog 
 在这个列表中的某处是你失去的承诺。 假设你只是inputgit reset HEAD~并且想撤消它。 我的reflog看起来像这样: 
 $ git reflog 3f6db14 HEAD@{0}: HEAD~: updating HEAD d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c [...] 
 第一行表示前面0位置(换句话说,当前位置)是3f6db14; 它是通过重新设置为HEAD~获得的。 第二行说, HEAD 1位置前(换句话说,复位之前的状态)是d27924e。 这是通过检查一个特定的提交(虽然这不是重要的)。 因此,要撤销重置,请运行git reset HEAD@{1} (或git reset d27924e )。 
 另一方面,如果你从那以后运行了一些其他的命令来更新HEAD,那么你想要的提交将不在列表的顶部,你需要通过reflog进行search。 
 最后一个注意事项:查看您想要重置的特定分支的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有更less的噪音。 
老问题,和张贴的答案很好。 尽pipe如此,我还是会select另一个选项。
 git reset ORIG_HEAD 
  ORIG_HEAD引用HEAD先前引用的提交。 
 我的情况稍有不同,我做了git reset HEAD~三次。 
为了解决它,我不得不这样做
 git reset HEAD@{3} 
所以你应该能够做到
 git reset HEAD@{N} 
但是,如果你已经做了git重置使用
 git reset HEAD~3 
你需要做的
 git reset HEAD@{1} 
由于{N}代表Reflog中的操作次数。 正如Mark在评论中指出的那样。