Git revert reset --hard命令

时间:2014-09-03 10:35:11

标签: git

我刚刚做了一个git reset - 硬命令。 这个git动作能以某种方式被还原吗? 我想获得未提交的更改。我在命令行中使用git。

我是否可以从仍在运行的tomcat / grails实例中获取代码?

3 个答案:

答案 0 :(得分:2)

如果从未提交过更改,则答案是否定的,您不能。

如果您执行了硬重置并丢失了已提交的更改,则可以通过检查reflog来恢复它们。

答案 1 :(得分:1)

如果未提交或暂停更改,则答案为否。

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

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

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

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

git cat-file -p 78981922613b2afb6025042ff6bd878ac1994e85

或者只是使用短名称(id的前几个字符)。

git cat-file -p 789819

为了恢复,我只是找到了答案。请参阅Undo git reset --hard with uncommitted files in the staging area

答案 2 :(得分:0)

在你没有制作临时补丁之前,没有办法取回未提交的更改,并且#34; git reset --hard" 现在你可以" git pull"同步。

但是有一些棘手的方法,只有在" Git reset --hard"之前你做了一些以下的命令时,才能获得未提交的更改。 : git diff 如果按了ctrl + z

,则退出

然后你可以通过命令" fg"来取回它。因为ctrl + z会使git diff命令在后台运行。如果你之前没有完成上面的操作" Git reset --hard",抱歉你必须再次写更改。祝你好运。