我怎样才能列出所有删除的文件在Git仓库?

我知道git存储何时文件被删除的信息,我能够检查单个提交,以查看哪些文件已被删除,但有一个命令,将生成一个存储库的寿命每个删除的文件的列表?

git log --diff-filter=D --summary 

请参阅在Git存储库中查找并还原已删除的文件

如果您不需要关于删除哪些提交的所有信息,则可以在其中添加一个grep delete

 git log --diff-filter=D --summary | grep delete 

这就是你想要的,我想:

 git log --all --pretty=format: --name-only --diff-filter=D | sort -u 

…我刚刚采取或多或less直接从这个其他的答案 。

如果您只想查看当前删除的文件,可以使用以下命令:

 git ls-files --deleted 

如果你然后想删除它们(如果你删除它们不使用“git rm”)pipe道,导致xargs git rm

 git ls-files --deleted | xargs git rm 

引用这个计算器的答案。 相当整洁的方式来获得更改的types(A:添加,M:修改,D:删除)每个文件被更改。

 git diff --name-status 

如果你想以某种方式限制结果,这是一个很好的结果:

 $ git log --diff-filter=D --summary | sed -n '/^commit/h;/\/some_dir\//{G;s/\ncommit \(.*\)/ \1/gp}' delete mode 100644 blah/some_dir/file1 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64 delete mode 100644 blah/some_dir/file2 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64 delete mode 100644 blah/some_dir/file3 9c89b91d8df7c95c6043184154c476623414fcb7 

您将从some_dir (请参阅sed命令)中删除所有文件以及发生的提交编号。 任何sed正则expression式都会(我用它来查找删除的文件types等)

由于Windows没有grep命令,这在PowerShell中适用于我:

 git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt 

这会得到一个所有分支中删除的所有文件的列表,按其pathsorting:

 git log --diff-filter=D --summary | grep "delete mode 100" | cut -c 21- | sort > deleted.txt 

在msysgit(2.6.1.windows.1)中工作。 注意我们需要“删除模式100”,因为git文件可能已经作为模式100644或100755提交。