Git恢复重置

我只是做了一次git reset - 硬性命令。 这个git动作能以某种方式恢复吗? 我想取回未提交的更改。 我从命令行使用git。

我能从一个仍在运行的tomcat / grails实例中获取代码吗?


如果变更没有提交或分阶段进行,答案是否定的。

如果你提交了更改,你可以找回,因为提交对象在那里。

如果您执行了更改(使用git add ),您仍然可以找回blob更改,因为已经生成了用于更改的blob对象。

首先,请复制您的整个git存储库作为备份。

只是为了调查,你可以用ls -l -t .git/objects来创建这些对象的创建时间。 每个对象都以对象标识的前2个字符作为文件夹名称存储,而左侧部分作为文件名称存储。 例如, 78/981922613b2afb6025042ff6bd878ac1994e85'. And you can use 78/981922613b2afb6025042ff6bd878ac1994e85'. And you can use git cat-file来获取它的内容。

git cat-file -p 78981922613b2afb6025042ff6bd878ac1994e85

或者只是简称(ID的前几个字符)。

git cat-file -p 789819

为了恢复,我刚刚找到了答案。 请参考撤消git reset --hard,并在暂存区域提交未提交的文件。


如果变更从未提交过,答案是否定的,你不能。

如果您进行了硬重置并丢失了已执行的更改,则可以通过检查reflog将其还原。


如果你没有在“git reset --hard”之前做一个临时补丁,现在你可以“git pull”进行同步,那么没有办法恢复未提交的更改。

但是,只有在“Git reset --hard”之前执行了以下命令才能获得未提交的更改,但有一些棘手的方法:1. git diff并退出,如果按Ctrl + z

那么你可以通过命令“fg”取回。 因为ctrl + z会让git diff命令在后台运行。 如果您之前没有在“Git reset --hard”之前完成上述操作,那么对不起,您必须重新编写更改。 祝你好运。

链接地址: http://www.djcxy.com/p/4029.html

上一篇: Git revert reset

下一篇: git add + git reset hard deleted working copy file