2011-05-16 84 views

回答

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

Find and restore a deleted file in a Git repository

如果你不希望所有有关其呈交他们在被删除的信息,你可以在里面添加grep delete

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

**警告:**这列出了您删除的所有文件。如果你删除了一个文件,然后创建具有相同名称的新文件,它会** **显示在此列表中,即使有一个现存的文件存在。 – 2014-08-09 08:43:21

+16

你也应该看看** git whatchanged **命令。它太酷了。 – 2015-03-19 19:30:56

+4

这将列出重命名为删除。要跳过这些使用'git log - 查找 - 重命名--diff-filter = D --summary | grep的delete' – 2015-07-21 13:00:11

73

这你想要做什么,我想:

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

...这我刚吃完更多或更少直接从this other answer

+8

+1用于对结果文件进行排序 – jupp0r 2014-05-26 13:22:04

25

如果你只在看到当前删除的文件感兴趣,你可以使用这个:

git ls-files --deleted 

,如果你再要删除它们(如果你删除了他们没有使用“混帐RM”)管道该结果xargs的混帐RM

git ls-files --deleted | xargs git rm 
+11

这仅显示索引中已在工作副本中删除的文件。 OP希望所有的文件都被删除。 – 2012-09-25 20:58:58

+0

这是一个伟大的观点,马克斯。感谢您指出了这一点。 – 2014-04-25 02:09:25

+1

或'git rm $(git ls-files --deleted)' – HerrSerker 2015-07-08 12:42:50

4

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

$ 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的正则表达式会做(我用这个来找到已删除的文件类型等)

+1

我认为这种方法在日常开发人员生活中非常有用。相反,如果你想列出从当前目录中删除的文件,只需要:'git log --diff-filter = D。' – Sebi 2015-09-23 07:07:53

+0

我遇到的情况是该目录也被删除了,而我只是新名称的一部分。 – estani 2015-09-23 10:13:20

6

援引this计算器答案。 漂亮整洁的方式来获得变型的-(A:增加,M:修改,d:删除)为得到了改变每个文件。

git diff --name-status 
0

这将让你在所有分支删除所有文件,其路径排序列表:

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

作品在msysgit(2.6.1.windows.1)。请注意,我们需要“删除模式100”为git的文件可能已被作为COMMITED模式100644或100755.

2

由于Windows不具备grep命令,这个工作对我来说在PowerShell中:

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

什么是“选择字符串”? – MarcusJ 2017-12-15 12:03:00

+0

这是一个PowerShell cmdlet。请参阅https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string?view=powershell-5.1 – 2017-12-15 17:03:25

+1

实际上,我已经完成了一些PowerShell脚本,上下文让我离 – MarcusJ 2017-12-15 21:07:34

相关问题