git rm -r删除了“忽略的”文件。如何使用git找回它们?

时间:2018-06-25 20:32:11

标签: git github rm

编辑:我能够从废纸recover中恢复文件,所以我不需要解决方案,但是我有兴趣了解如何使用git进行恢复(因为这会产生问题),以及为什么执行任何git操作都会影响“被忽略”的文件。

我有一个.gitignore条目,例如:

reference/ 

这是一个文件夹,我的项目中有很多大型参考数据文件。

我做了

git rm -r 

那些文件被删除

我还没有意识到它们已经消失了,并且想把所有东西都找回来,所以使用github客户端“放弃所有更改...”

现在,除了被“忽略”的文件之外,所有内容都恢复了。

我的操作系统是OSX High Sierra。

我如何找回他们?

1 个答案:

答案 0 :(得分:1)

$git rm --help
  

NAME
         git-rm-从工作树和索引中删除文件

     

简介
         git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [-] ...

     

DESCRIPTION
        从索引或工作树和索引中删除文件。 git rm不会仅从您的工作目录中删除文件。(有          没有选择仅从工作树中删除文件并将其保留在索引中的选项;如果要这样做,请使用/ bin / rm。)          删除必须与分支的顶端相同,并且无法对其内容进行任何更新,尽管该默认设置          行为可以使用-f选项覆盖。当给出--cached时,暂存的内容必须与分支的尖端或文件匹配          在磁盘上,允许仅从索引中删除文件。

因此,当您使用git rm删除文件时,文件已经在索引中或历史记录中。否则git不会删除它们。

您不能责怪git做您说的话。


回答您的问题:

  • 如果文件中有蜜蜂(但尚未提交),则您将丢失。 git帮不上忙。

  • 如果文件已提交,则可以从上一次提交中检出它们:

    git checkout HEAD^ path/to/deleted/file
    

    这将自动将它们再次添加到索引中,因此您必须使用

    index 中将它们删除
    git rm --cached path/to/deleted/file