繁体   English   中英

恢复从未提交的已删除目录

[英]Restore deleted directory that was never committed

我不小心将本地目录添加到本地Git存储库中。

git add dirName

它在该目录中添加了大约二十个文件。 我不想添加他们。 以前从未添加过它们,我也没有提交它们。 相反,我使用以下命令删除了它们:

git rm -rf dirName

这成功地将它们从存储库中删除,但是令我沮丧的是,该目录似乎也已从磁盘中删除。 它们不在我的回收站中。

有什么办法找回那些文件吗? 当然,我有一个备份,但是自上次备份以来,我对文件进行了很多更改。

我认为接受的答案并不完全正确。 确实git 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只会将其从舞台中删除,而不是从光盘中删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM