私信  •  关注

Mark Lodato zainengineer

Mark Lodato zainengineer 最近创建的主题
Mark Lodato zainengineer 最近回复了
11 年前
回复了 Mark Lodato zainengineer 创建的主题 » git重置为上一次提交后丢失的文件和更改[重复]

我的情况略有不同 git reset HEAD~ 三次。

要解开它我必须做

git reset HEAD@{3}

所以你应该可以

git reset HEAD@{N}

但是如果您使用

git reset HEAD~3

你必须这么做

git reset HEAD@{1}

As{N}表示重新登录中的操作数。正如马克在评论中指出的那样。

10 年前
回复了 Mark Lodato zainengineer 创建的主题 » git重置为上一次提交后丢失的文件和更改[重复]

简短回答:

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 .