我尝试过git reset --hard HEAD@{n}
from git reflog
我丢失了当前未暂存文件的所有内容:'(
未暂存的文件是最后一个git add
我做到了,在那之前我尝试过git reset
到最后git commit
.
我所有的文件都消失了,我无法返回git add
最后一次提交之前:'(
目前尚不清楚您是否丢失了工作目录中的文件,或者
索引。你说你丢失了“未暂存的文件”,但后来你提到
你可能已经运行了“git add”。 “未暂存的文件”将永远丢失。
暂存文件可以通过以下方式恢复
git fsck --full --unreachable --no-reflog
对于添加的每个文件,都会有一个丢失的 blob 对象,并且对于每个
目录条目会有一个树对象。你会恢复你的
通过执行以下操作更改文件
git cat-file -p SHA
对于您修改过的每个文件
(master)$ vi bar
(master)$ vi baz
(master)$ vi foo
(master)$ git add foo bar baz
(master)$ git reset --hard HEAD
HEAD is now at ead8fa2 initial
(master)$ git fsck --full --unreachable --no-reflog
Checking object directories: 100% (256/256), done.
unreachable blob 0c29287001b29159f11c4e8a320bce7e9789c00b
unreachable blob 1524d3478e3d0b92866a53239b10bcd4b3838c4d
unreachable blob 97b724e770249816c61d8a526415986208ed7e15
// take a look at one of the objects
(master)git cat-file -p 0c29287001b29159f11c4e8a320bce7e9789c00b
changes for bar
//Here, based on inspecting the output, I can determine that 0c29287 was the file "bar"
(master) git cat-file -p 0c29287 > bar
(注意我测试时没有得到任何丢失的树,所以这部分可能不起作用)
如果您修改了一大堆文件,那么恢复可能会更容易
通过树对象而不是单个文件
git read-tree SHA
其中 SHA 是根树的丢失树对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)