什么是最简单的撤消方法
git reset HEAD~
Run Code Online (Sandbox Code Playgroud)
命令?目前,我能想到的唯一方法是从远程仓库进行"git clone http:// ...".
Mar*_*ato 2178
git reset 'HEAD@{1}'
Run Code Online (Sandbox Code Playgroud)
Git记录所有ref更新(例如,checkout,reset,commit,merge).您可以通过键入以下内容查看:
git reflog
Run Code Online (Sandbox Code Playgroud)
此列表中的某个位置是您丢失的提交.假设您刚输入git reset HEAD~并想要撤消它.我的reflog看起来像这样:
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
Run Code Online (Sandbox Code Playgroud)
第一行表示HEAD0位前(换句话说,当前位置)是3f6db14; 它是通过重置为获得的HEAD~.第二行表示HEAD1位前(换句话说,复位前的状态)是d27924e.它是通过检查一个特定的提交获得的(虽然现在不重要).因此,要撤消重置,请运行git reset HEAD@{1}(或git reset d27924e).
另一方面,如果您从那时起运行了一些其他命令更新HEAD,那么您想要的提交将不会位于列表的顶部,您需要搜索reflog.
最后一点说明:reflog对于要取消重置的特定分支,比如掌握,可能更容易,而不是HEAD:
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
Run Code Online (Sandbox Code Playgroud)
这应该比一般的噪音少HEAD reflog.
Dan*_*her 164
老问题,发布的答案很有用.不过我会选择其他选项.
git reset ORIG_HEAD
ORIG_HEAD引用HEAD先前引用的提交.
zai*_*eer 48
我的情况略有不同,我做git reset HEAD~了三次.
要撤消它我必须这样做
git reset HEAD@{3}
Run Code Online (Sandbox Code Playgroud)
所以你应该能做到
git reset HEAD@{N}
Run Code Online (Sandbox Code Playgroud)
但是如果你已经使用了git reset
git reset HEAD~3
Run Code Online (Sandbox Code Playgroud)
你需要做的
git reset HEAD@{1}
Run Code Online (Sandbox Code Playgroud)
由于{N}表示Reflog中的操作数.正如马克在评论中指出的那样.
use*_*064 47
答案大多数时候有效
git reset 'HEAD@{1}'
Run Code Online (Sandbox Code Playgroud)
答案每次都有效
git reset --hard 'HEAD@{1}'
Run Code Online (Sandbox Code Playgroud)
where--hard使得一切都和以前一样。
| 归档时间: |
|
| 查看次数: |
380426 次 |
| 最近记录: |