在git中,我熟悉如何使用git checkout -- [
语法检查已删除的单个文件(建议您这样做)git status
.
要获取所有文件,您可以创建一个列表并将列表作为上述命令的参数.
但是,当你只想要删除所有已删除的文件(即你的cwd中的rm -rf,然后你想恢复所有文件)时,生成该列表是不优雅的.
如何查看所有已删除的文件?
生成列表不说难:
git diff --no-renames --name-only --diff-filter=D
使其适用于git checkout
,使用-z
和xargs -0
:
git diff --no-renames --name-only --diff-filter=D -z | xargs -0 git checkout --
请注意,使用git checkout -f -- .
与上述完全不同,因为git checkout -f -- .
将覆盖已修改但尚未添加到索引的文件,而上述内容仅从索引中提取仍在索引中但不再在工作中的文件-树.
(如果你没有这样的修改过的文件,git checkout -f -- .
那就行了,但那样的话git checkout -- .
.)