Jawaban:
git log --diff-filter=D --summary
Lihat Menemukan dan mengembalikan file yang dihapus di repositori Git
Jika Anda tidak ingin semua informasi tentang komit mana mereka dihapus, Anda bisa menambahkannya grep deletedi sana.
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 deletekarena jika pesan komit memiliki kata hapus, itu akan diambil juga. Gunakan grep 'delete mode'sebagai gantinya.
Ini melakukan apa yang Anda inginkan, saya pikir:
git log --all --pretty=format: --name-only --diff-filter=D | sort -u
... yang baru saja saya ambil kurang lebih langsung dari jawaban lain ini .
Jika Anda hanya tertarik melihat file yang saat ini dihapus, Anda dapat menggunakan ini:
git ls-files --deleted
jika Anda kemudian ingin menghapusnya (jika Anda menghapusnya tidak menggunakan "git rm") pipa yang menghasilkan xargs git rm
git ls-files --deleted | xargs git rm
git rm $(git ls-files --deleted)
Dan jika Anda ingin membatasi hasilnya, inilah yang bagus:
$ 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
Anda akan mendapatkan semua file dihapus dari some_dir(lihat perintah sed) bersama dengan nomor komit di mana itu terjadi. Setiap regex akan melakukan (Saya menggunakan ini untuk menemukan jenis file yang dihapus, dll)
git log --diff-filter=D .
Karena Windows tidak memiliki grepperintah, ini berfungsi untuk saya di PowerShell:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
Select-String?
Tampilkan semua file yang dihapus di some_branch
git diff origin/master...origin/some_branch --name-status | grep ^D
atau
git diff origin/master...origin/some_branch --name-status --diff-filter=D
git diff origin/master...origin/some_branch --name-status | grep ^Dataugit diff origin/master...origin/some_branch --name-status --diff-filter=D
Ini akan memberi Anda daftar semua file yang dihapus di semua cabang, diurutkan berdasarkan jalurnya:
git log --diff-filter=D --summary | grep "delete mode 100" | cut -c 21- | sort > deleted.txt
Bekerja di msysgit (2.6.1.windows.1). Catatan kita perlu "hapus mode 100" karena file git mungkin telah dikomit sebagai mode 100644 atau 100755.
git diff --name-status commit_hash.