it-swarm.com.de

Wie kann ich alle gelöschten Dateien in einem Git-Repository auflisten?

Ich weiß, dass git Informationen darüber speichert, wann Dateien gelöscht werden, und ich kann einzelne Festschreibungen überprüfen, um festzustellen, welche Dateien entfernt wurden. Gibt es jedoch einen Befehl, der eine Liste aller gelöschten Dateien über die Lebensdauer eines Repositorys hinweg erstellt?

275
Toby
git log --diff-filter=D --summary

Siehe Suchen und Wiederherstellen einer gelöschten Datei in einem Git-Repository

Wenn Sie nicht alle Informationen darüber erhalten möchten, in welchem ​​Commit sie entfernt wurden, können Sie einfach ein grep delete da drin.

git log --diff-filter=D --summary | grep delete
376
I82Much

Das macht was du willst, denke ich:

git log --all --pretty=format: --name-only --diff-filter=D | sort -u

... was ich gerade mehr oder weniger direkt aus diese andere Antwort genommen habe.

82
Mark Longair

Wenn Sie nur die aktuell gelöschten Dateien sehen möchten, können Sie dies verwenden:

git ls-files --deleted

wenn Sie sie dann entfernen möchten (falls Sie sie nicht mit "git rm" gelöscht haben), leiten Sie diese an xargs git rm weiter

git ls-files --deleted | xargs git rm
32
Jim Clouse

Zitieren this Stackoverflow-Antwort. Ziemlich gute Möglichkeit, die Art der Änderung (A: Hinzugefügt, M: Geändert, D: Gelöscht) für jede Datei zu ermitteln, die geändert wurde.

git diff --name-status
9
akshay

Und wenn Sie die Ergebnisse irgendwie einschränken möchten, ist dies ein netter:

$ 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

Sie erhalten alle Dateien gelöscht von some_dir (siehe sed-Befehl) zusammen mit der Festschreibungsnummer, in der es vorkommt. Alle sed regulären Ausdrücke können verwendet werden (ich verwende dies, um gelöschte Dateitypen usw. zu finden).

4
estani

Da Windows keinen grep -Befehl hat, funktionierte dies in PowerShell:

git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
4
James Skemp

zeige alle gelöschten Dateien in some_branch

git diff Origin/master...Origin/some_branch --name-status|grep D
1
vix2

Dadurch erhalten Sie eine Liste aller Dateien, die in allen Zweigen gelöscht wurden, sortiert nach ihrem Pfad:

git log --diff-filter=D --summary | grep "delete mode 100" | cut -c 21- | sort > deleted.txt

Funktioniert in msysgit (2.6.1.windows.1). Beachten Sie, dass wir "Löschmodus 100" benötigen, da Git-Dateien möglicherweise als Modus 100644 oder 100755 festgeschrieben wurden.

0
Mr_and_Mrs_D