我知道git存储文件何时被删除的信息,我能够检查各个提交以查看哪些文件已被删除但是是否有一个命令可以在存储库的生命周期内生成每个已删除文件的列表?
I82*_*uch 385
git log --diff-filter=D --summary
Run Code Online (Sandbox Code Playgroud)
如果您不想要有关删除它们的提交的所有信息,您可以在其中添加一个grep delete.
git log --diff-filter=D --summary | grep delete
Run Code Online (Sandbox Code Playgroud)
Mar*_*air 84
我认为这就是你想要的:
git log --all --pretty=format: --name-only --diff-filter=D | sort -u
Run Code Online (Sandbox Code Playgroud)
Jim*_*use 34
如果您只想查看当前删除的文件,可以使用以下命令:
git ls-files --deleted
Run Code Online (Sandbox Code Playgroud)
如果你想删除它们(如果你删除它们不使用"git rm")管道导致xargs git rm
git ls-files --deleted | xargs git rm
Run Code Online (Sandbox Code Playgroud)
引用此 stackoverflow答案.为变更的每个文件获得更改类型(A:已添加,M:已修改,D:已删除)的相当简洁的方法.
git diff --name-status
Run Code Online (Sandbox Code Playgroud)
如果你想以某种方式限制结果,这是一个很好的结果:
$ 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
Run Code Online (Sandbox Code Playgroud)
您将从some_dir(请参阅 sed 命令)中删除所有文件以及它发生的提交编号。任何 sed 正则表达式都可以(我用它来查找已删除的文件类型等)
由于 Windows 没有grep命令,这在 PowerShell 中对我有用:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
Run Code Online (Sandbox Code Playgroud)
小智 5
显示some_branch 中所有已删除的文件
git diff origin/master...origin/some_branch --name-status | grep ^D
Run Code Online (Sandbox Code Playgroud)
或者
git diff origin/master...origin/some_branch --name-status --diff-filter=D
Run Code Online (Sandbox Code Playgroud)