Py学习  »  Git

git重置为上一次提交后丢失的文件和更改[重复]

user2277146 • 5 年前 • 808 次点击  

最简单的方法是什么

git reset HEAD~

命令? 目前,我能想到的唯一方法是从远程repo中执行“git克隆http://…”。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51820
 
808 次点击  
文章 [ 4 ]  |  最新文章 5 年前
Constantin Chirila omilus
Reply   •   1 楼
Constantin Chirila omilus    5 年前

1.使用 git reflog 以更新所有引用。

2。 git reset <id_of_commit_to_which_you_want_restore>

Mark Lodato zainengineer
Reply   •   2 楼
Mark Lodato zainengineer    10 年前

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

要解开它我必须做

git reset HEAD@{3}

所以你应该可以

git reset HEAD@{N}

但是如果您使用

git reset HEAD~3

你必须这么做

git reset HEAD@{1}

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

Dan Fischer
Reply   •   3 楼
Dan Fischer    9 年前

老问题,和张贴的答案工作得很好。不过,我会提出另一个选择。

git reset ORIG_HEAD

ORIG_HEAD 引用 HEAD 以前引用过。

Mark Lodato zainengineer
Reply   •   4 楼
Mark Lodato zainengineer    9 年前

简短回答:

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 .