簡體   English   中英

如何列出 Git 存儲庫中所有已刪除的文件?

[英]How can I list all the deleted files in a Git repository?

我知道 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

...我剛剛或多或少地直接從另一個答案中獲取了它

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

git ls-files --deleted

如果你想刪除它們(如果你不使用“git rm”刪除它們)導致 xargs git rm 的管道

git ls-files --deleted | xargs git rm

引用這個Stack Overflow 的答案。

這是為每個更改的文件獲取更改類型(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 正則表達式都可以(我用它來查找已刪除的文件類型等)

由於 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM