我不小心将本地目录添加到本地 Git 存储库中。
git add dirName
它在该目录中添加了大约二十个文件。我不想添加它们。它们以前从未添加过,我也没有提交它们。相反,我删除了它们:
git rm -rf dirName
这成功地将它们从存储库中删除,但令我沮丧的是,该目录似乎也已从磁盘中删除。它们不在我的回收站中。
有什么办法可以找回这些文件吗?当然,我有备份,但自上次备份以来,我对文件进行了很多更改。
我认为接受的答案并不完全准确。Indeedgit rm
会从索引中删除文件,但它们通常会在 Git 的对象数据库中保留一段时间。除非您强制进行垃圾收集,否则就是这样。
您是否尝试过跑步git fsck
以检索一些悬垂的斑点或悬垂的树木?
$ git init test
Initialized empty Git repository in D:/DOCUME~1/T012345/LOCALS~1/Temp/test/.git/
$ echo baz > foo/bar.txt
$ git add -Av
add 'foo/bar.txt'
$ git rm -rf *
rm 'foo/bar.txt'
$ git fsck
notice: HEAD points to an unborn branch (master)
Checking object directories: 100% (256/256), done.
notice: No default references
dangling blob 76018072e09c5d31c8c6e3113b8aa0fe625195ca
$ git cat-file -p 76018072e09c5d31c8c6e3113b8aa0fe625195ca
baz
不,不是因为
git rm -rf dirName
就好像
rm -rf dirName
这也是不可逆转的,但它也会删除暂存文件,因此您无法取回文件。下次使用 git rm --cached dirName 只会将其从舞台上删除,而不是从您的光盘中删除。