[英]How can I list all the deleted files in a Git repository?
我知道 Git 存儲文件何時被刪除的信息,我能夠檢查單個提交以查看哪些文件已被刪除,但是是否有一個命令可以生成存儲庫生命周期中每個已刪除文件的列表?
git log --diff-filter=D --summary
如果您不想要關於它們被刪除的提交的所有信息,您可以在其中添加一個grep delete
。
git log --diff-filter=D --summary | grep delete
這就是你想要的,我認為:
git log --all --pretty=format: --name-only --diff-filter=D | sort -u
...我剛剛或多或少地直接從另一個答案中獲取了它。
如果您只想查看當前已刪除的文件,可以使用以下命令:
git ls-files --deleted
如果你想刪除它們(如果你不使用“git rm”刪除它們)導致 xargs git rm 的管道
git ls-files --deleted | xargs git rm
如果你想以某種方式限制結果,這是一個很好的結果:
$ 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 正則表達式都可以(我用它來查找已刪除的文件類型等)
由於 Windows 沒有grep
命令,這在 PowerShell 中對我有用:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
顯示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 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 提交。
如果您希望名稱完全由換行符分隔,則可以使用--name-only
標志,如下所示:
git diff --diff-filter=D --name-only <old-commit-hash> <new-commit-hash>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.