B S*_*ven 10 git commit rm undo delete-file
我做了:
git init
git add .
git rm -rf dirname
Run Code Online (Sandbox Code Playgroud)
综观其他answsers, git reset --hard HEAD
,git checkout -f
和git reflog
没有工作,显然是因为没有文件头回去,也没有提交获取文件从后面.
有没有办法让文件恢复?
警告:在git prune
没有-n
选项 (1) 的情况下运行将删除您无法访问的数据。
可能有一种方法,使用git prune
和git cat-file
。
运行git prune -n
将列出哪些对象将被修剪删除:
$ git prune -n
9cc84ea9b4d95453215d0c26489d6a78694e0bc6 blob
c315143703752ef4d11ca7d93f2c324872b2ebff blob
Run Code Online (Sandbox Code Playgroud)
每行对应一个已删除的文件。
现在,使用git cat-file
,我们可以将已删除文件的内容恢复到新文件中:
git cat-file -p 9cc84ea9b4d95453215d0c26489d6a78694e0bc6 > restored-filename
Run Code Online (Sandbox Code Playgroud)
(1)从git prune
文档:
名称
git-prune - 从对象数据库中删除所有无法访问的对象
OPTIONS
-n
--dry-run
不要删除任何内容;只需报告它将删除的内容。
没有办法.
通常,git rm
在删除之前检查文件是否已经提交,这样您就不会丢失任何工作.但是,使用-f
覆盖此检查.
简而言之:
-f
.