如何撤消此命令?
git reset HEAD~
i2byvkas1#
git reset 'HEAD@{1}'
Git会保存所有ref更新的日志(例如,checkout,reset,commit,merge)。你可以输入以下命令查看:
git reflog
这个列表中的某个地方是你丢失的提交。假设你刚刚输入了git reset HEAD~并想撤销它。我的reflog看起来像这样:
$ git reflog 3f6db14 HEAD@{0}: HEAD~: updating HEAD d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c [...]
第一行表示HEAD 0个位置之前(换句话说,当前位置)是3f 6db 14;它是通过重置为HEAD~获得的。第二行说HEAD 1个位置之前(换句话说,重置之前的状态)是d27924 e。它是通过检出特定提交获得的(尽管现在这并不重要)。因此,要撤销重置,请运行git reset HEAD@{1}(或git reset d27924e)。另一方面,如果你在那之后运行了一些更新HEAD的命令,你想要的提交不会在列表的顶部,你需要搜索reflog。最后一点:查看您想要取消重置的特定分支的reflog可能更容易,比如master,而不是HEAD:
HEAD
HEAD~
git reset HEAD@{1}
git reset d27924e
reflog
$ git reflog show master c24138b master@{0}: merge origin/master: Fast-forward 90a2bf9 master@{1}: merge origin/master: Fast-forward [...]
这应该比一般的HEAD reflog有更少的噪音。
HEAD reflog
svujldwt2#
老问题了,张贴的答案很好。我会插话与另一种选择,虽然。git reset ORIG_HEADORIG_HEAD引用HEAD之前引用的提交。
git reset ORIG_HEAD
ORIG_HEAD
j2qf4p5b3#
我的情况略有不同,我做了三次git reset HEAD~。为了挽回这一切
git reset HEAD@{3}
所以你应该可以
git reset HEAD@{N}
但是如果你已经使用git reset
git reset HEAD~3
你需要做的
jtw3ybtb4#
1.使用git reflog获取所有引用更新。
git reset <id_of_commit_to_which_you_want_restore>
rur96b6h5#
答案大部分时间都有效
答案每次都有效
git reset --hard 'HEAD@{1}'
其中--hard使一切保持与以前相同。
--hard
5条答案
按热度按时间i2byvkas1#
简答:
长回答:
Git会保存所有ref更新的日志(例如,checkout,reset,commit,merge)。你可以输入以下命令查看:
这个列表中的某个地方是你丢失的提交。假设你刚刚输入了
git reset HEAD~
并想撤销它。我的reflog看起来像这样:第一行表示
HEAD
0个位置之前(换句话说,当前位置)是3f 6db 14;它是通过重置为HEAD~
获得的。第二行说HEAD
1个位置之前(换句话说,重置之前的状态)是d27924 e。它是通过检出特定提交获得的(尽管现在这并不重要)。因此,要撤销重置,请运行git reset HEAD@{1}
(或git reset d27924e
)。另一方面,如果你在那之后运行了一些更新HEAD的命令,你想要的提交不会在列表的顶部,你需要搜索
reflog
。最后一点:查看您想要取消重置的特定分支的
reflog
可能更容易,比如master,而不是HEAD
:这应该比一般的
HEAD reflog
有更少的噪音。svujldwt2#
老问题了,张贴的答案很好。我会插话与另一种选择,虽然。
git reset ORIG_HEAD
ORIG_HEAD
引用HEAD
之前引用的提交。j2qf4p5b3#
我的情况略有不同,我做了三次
git reset HEAD~
。为了挽回这一切
所以你应该可以
但是如果你已经使用git reset
你需要做的
jtw3ybtb4#
1.使用
git reflog
获取所有引用更新。git reset <id_of_commit_to_which_you_want_restore>
rur96b6h5#
答案大部分时间都有效
答案每次都有效
其中
--hard
使一切保持与以前相同。