我试图将我的月份项目添加到git.这是我的第一个真正的项目和git.在创建存储库(git init)之后,我将它们(git add.)上传并添加了我的.gitignore以忽略所有不必要的文件.这不起作用所以我决定删除所有暂存的文件,然后再试一次.我最终删除了所有内容,我的意思是一切.因此没有任何提交,rm选项删除了所有内容.我注意到的是.git目录大约是130mb告诉我即使我从未提交并清除了暂存区域,它仍然必须有我的原始暂存文件的某种副本?有什么方法可以尝试和恢复吗?
如果您已git add
编辑文件然后取消暂存并删除它们,则通常可以使用恢复数据git fsck
.
这里的关键是git add
在你的文件的git仓库中创建一个blob,但是git rm
不要删除blob,只删除文件.稍后当您运行命令或运行时,git repo将自动删除旧的和未使用的blob git gc
.但在那之前,blob仍然存在,它只是"悬空" - 意味着什么都没有引用它.您可以使用它来恢复数据.
问题是你丢失了文件名,如果回购已经存在了一段时间,你可能需要筛选很多悬空引用.
这是一个例子,从悲伤开始.
创建一个新的git仓库,创建文件,添加,删除,删除它.
> git init .
> echo "HELLO WORLD" > hello.txt
> git add hello.txt
> git rm hello.txt
Run Code Online (Sandbox Code Playgroud)
现在尝试查找旧文件内容
> git fsck --full
...
dangling blob 4e3dffe8
...
Run Code Online (Sandbox Code Playgroud)
我们现在可以恢复它
> git show 4e3dffe8
HELLO WORLD
> git show 4e3dffe8 > hello.txt
Run Code Online (Sandbox Code Playgroud)