在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
如何撤消这些更改,从而使用单个命令检索所有已删除的文件?
答案 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
恢复到最后一次提交(如果您的文件在最后一次提交中)。