一个Git命令,用于检索未暂存和已提交的所有已删除文件

时间:2016-10-14 09:15:45

标签: git

git存储库中,我错误地删除了一些跟踪的文件(100+)。

这些删除尚未上演和提交。

这是我在git status时看到的内容。已删除文件的数量为100+,因此我无法单独检索每个文件。

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

  deleted:    some_tracked_file1.php
  deleted:    some_tracked_file2.php
  deleted:    some_tracked_file3.php

如何撤消这些更改,从而使用单个命令检索所有已删除的文件?

2 个答案:

答案 0 :(得分:3)

答案就在您引用的输出中:

  

(使用“git checkout - file ...”来放弃工作目录中的更改)

这将放弃包括删除在内的更改。

如果这些是更改列出,并且您想要删除所有,那么您可以执行以下操作:

git reset --hard

这将使您的工作目录恢复到上次提交时的状态,放弃任何本地或分阶段的更改。

如果您还有 想要还原的其他更改,则必须使用checkout --命令。您可以轻松编写此脚本,仅在* nix上恢复已删除但未暂存的文件:

git status --porcelain | grep -E '^ D' | awk '{print $2}' | xargs git checkout --

我不知道Windows的等价物是什么样的,如果你的文件名包含空格,你就会遇到问题。

答案 1 :(得分:-2)

如果 git reset --hard不起作用,您可以使用git revert HEAD恢复到最后一次提交(如果您的文件在最后一次提交中)。