我刚刚做了一个git reset - 硬命令。 这个git动作能以某种方式被还原吗? 我想获得未提交的更改。我在命令行中使用git。
我是否可以从仍在运行的tomcat / grails实例中获取代码?
答案 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",抱歉你必须再次写更改。祝你好运。