Risposte:
git log --diff-filter=D --summary
Vedi Trova e ripristina un file cancellato in un repository Git
Se non desideri tutte le informazioni su quale commit sono state rimosse, puoi semplicemente aggiungerne una grep delete
.
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
perché, se il messaggio di commit ha la parola delete, verrà raccolto anche. Usa grep 'delete mode'
invece.
Questo fa quello che vuoi, penso:
git log --all --pretty=format: --name-only --diff-filter=D | sort -u
... che ho appena preso più o meno direttamente da questa altra risposta .
Se sei interessato solo a visualizzare i file attualmente eliminati, puoi utilizzare questo:
git ls-files --deleted
se poi vuoi rimuoverli (nel caso in cui li hai eliminati non usando "git rm") pipe che risultano in xargs git rm
git ls-files --deleted | xargs git rm
git rm $(git ls-files --deleted)
E se vuoi in qualche modo limitare i risultati, eccone uno bello:
$ 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
Otterrai tutti i file eliminati da some_dir
(vedi il comando sed) insieme al numero di commit in cui si verifica. Qualsiasi sed regex lo farà (lo uso per trovare tipi di file cancellati, ecc.)
git log --diff-filter=D .
Poiché Windows non ha un grep
comando, questo ha funzionato per me in PowerShell:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
Select-String
?
Mostra tutti i file eliminati in some_branch
git diff origin/master...origin/some_branch --name-status | grep ^D
o
git diff origin/master...origin/some_branch --name-status --diff-filter=D
git diff origin/master...origin/some_branch --name-status | grep ^D
ogit diff origin/master...origin/some_branch --name-status --diff-filter=D
Questo ti porterà un elenco di tutti i file che sono stati eliminati in tutti i rami, ordinati in base al loro percorso:
git log --diff-filter=D --summary | grep "delete mode 100" | cut -c 21- | sort > deleted.txt
Funziona in msysgit (2.6.1.windows.1). Nota che abbiamo bisogno di "eliminare la modalità 100" poiché i file git potrebbero essere stati sottoposti a commit come modalità 100644 o 100755.
git diff --name-status commit_hash
.