社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

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

user2277146 • 4 年前 • 629 次点击  

最简单的方法是什么

git reset HEAD~

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

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

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

2。 git reset <id_of_commit_to_which_you_want_restore>

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

我的情况略有不同 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    8 年前

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

git reset ORIG_HEAD

ORIG_HEAD 引用 HEAD 以前引用过。

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

简短回答:

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 .