Answers:
git log --diff-filter=D --summary
如果您不希望获得有关删除了哪些提交的所有信息,则可以在其中添加一个grep delete
。
git log --diff-filter=D --summary | grep delete
git log --find-renames --diff-filter=D --summary | grep delete
git log --no-renames --diff-filter=D --summary | grep delete
grep delete
因为如果提交消息中包含单词delete,它也会被拾取。使用grep 'delete mode'
代替。
如果您只想查看当前已删除的文件,可以使用以下方法:
git ls-files --deleted
如果您随后想要删除它们(如果不使用“ git rm”删除了它们),则会导致生成xargs git rm
git ls-files --deleted | xargs git rm
git rm $(git ls-files --deleted)
如果您想以某种方式限制结果,那么这里是一个不错的选择:
$ 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正则表达式都可以(我用它来查找已删除的文件类型,等等)
git log --diff-filter=D .
由于Windows没有grep
命令,因此在PowerShell中对我有用:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
Select-String
啊
显示some_branch中所有已删除的文件
git diff origin/master...origin/some_branch --name-status | grep ^D
要么
git diff origin/master...origin/some_branch --name-status --diff-filter=D
git diff origin/master...origin/some_branch --name-status | grep ^D
或git diff origin/master...origin/some_branch --name-status --diff-filter=D
这将为您提供所有分支中已删除的所有文件的列表,并按其路径排序:
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。
git diff --name-status commit_hash
。