如何找回用`git rm -r -f`删除的文件?

时间:2014-10-20 10:59:09

标签: git

我做了

git rm -f -r

认为索引中的所有文件将被删除,但它们已从我的文件夹中删除。

如何取回我的文件?

4 个答案:

答案 0 :(得分:1)

如果您的工作目录仍然存在并且它包含.git子目录,那么您可以使用git reset --hard HEAD,它将从HEAD指示的当前git提交重新创建工作目录。

您的问题看起来像在添加上游时添加了一个额外的参数。你需要:

git remote set-url origin https://...

git remote add origin https://....

答案 1 :(得分:0)

如果你的文件已被推送,快速修复就是从github再次克隆存储库。

否则,如果您的文件已被git跟踪,您应该能够使用git reflog命令恢复它们。

否则,请考虑使用某些文件恢复软件(即http://pcsupport.about.com/od/filerecovery/tp/free-file-recovery-programs.htm

答案 2 :(得分:0)

取决于删除后存储库的状态:

  1. 如果git status未显示您要保留的任何更改,则只需将存储库还原为上次提交:git reset --hard HEADgit reset --hard(提交即HEAD指向默认参数)

  2. 如果您要保留已经添加到git add索引的更改,则这些更改和文件删除都将在索引中。在这种情况下,您必须手动分离这些更改。例如,您可以对包含要保留的更改的文件执行git reset --soft -- <path_to_file>。然后使用git stash --keep-index存储非暂存文件。然后,使用git reset --hard将存储库还原到上次提交。最后,您使用git stash apply重新应用您预先隐藏的更改。检查一切是否很酷,并使用git stash drop删除隐藏的信息。

  3. 如果您想要保留尚未添加到索引中的更改,请使用方法#2并忽略第一阶段(要保留的更改的软重置)。

  4. 请注意,如果删除之前删除的文件中有任何修改,那么您将无法使用Git恢复它们。

    偏离主题:我不太明白你的初衷是什么,但也许git rm --cached是你正在寻找的命令。

    希望这有帮助

答案 3 :(得分:0)

您好我得到了答案并检索了文件 所以我做了

git status

显示要提交的更改 然后取消暂停执行的提交

git reset HEAD

你必须用文件名

执行上面的命令

所以上面的命令取消了所有的更改

git status

显示未提交的更改

git checkout -

你必须用文件名

执行上述命令

所以我收回了所有文件

进一步说明你可以看到 http://www.linuxquestions.org/questions/programming-9/accidantally-deleted-project-with-git-rm-how-to-get-it-back-773539/