Câu trả lời:
git log --diff-filter=D --summary
Xem Tìm và khôi phục tệp đã xóa trong kho Git
Nếu bạn không muốn tất cả thông tin về những cam kết mà họ đã bị xóa, bạn chỉ có thể thêm một thông tin grep delete
vào đó.
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
vì nếu thông điệp cam kết có từ xóa, nó cũng sẽ được chọn. Sử dụng grep 'delete mode'
thay thế.
Đây là những gì bạn muốn, tôi nghĩ:
git log --all --pretty=format: --name-only --diff-filter=D | sort -u
... mà tôi vừa mới lấy ít nhiều trực tiếp từ câu trả lời khác này .
Nếu bạn chỉ muốn xem các tệp hiện đang bị xóa, bạn có thể sử dụng:
git ls-files --deleted
nếu sau đó bạn muốn xóa chúng (trong trường hợp bạn đã xóa chúng không sử dụng đường ống "git rm") dẫn đến xargs git rm
git ls-files --deleted | xargs git rm
git rm $(git ls-files --deleted)
Và nếu bạn muốn bằng cách nào đó hạn chế kết quả thì đây là một kết quả hay:
$ 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
Bạn sẽ nhận được tất cả các tệp bị xóa khỏi some_dir
(xem lệnh sed) cùng với số cam kết trong đó xảy ra. Bất kỳ regex sed nào cũng được (Tôi sử dụng điều này để tìm các loại tệp đã bị xóa, v.v.)
git log --diff-filter=D .
Vì Windows không có grep
lệnh, điều này làm việc với tôi trong PowerShell:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
Select-String
gì
Hiển thị tất cả các tệp đã bị xóa trong some_branch
git diff origin/master...origin/some_branch --name-status | grep ^D
hoặc là
git diff origin/master...origin/some_branch --name-status --diff-filter=D
git diff origin/master...origin/some_branch --name-status | grep ^D
hoặcgit diff origin/master...origin/some_branch --name-status --diff-filter=D
Điều này sẽ giúp bạn có một danh sách tất cả các tệp đã bị xóa trong tất cả các nhánh, được sắp xếp theo đường dẫn của chúng:
git log --diff-filter=D --summary | grep "delete mode 100" | cut -c 21- | sort > deleted.txt
Hoạt động trong msysgit (2.6.1.windows.1). Lưu ý rằng chúng tôi cần "xóa chế độ 100" vì các tệp git có thể đã được cam kết là chế độ 100644 hoặc 100755.
git diff --name-status commit_hash
.