Ich weiß, dass Git Informationen darüber speichert, wann Dateien gelöscht werden, und ich kann einzelne Commits überprüfen, um festzustellen, welche Dateien entfernt wurden. Gibt es jedoch einen Befehl, der eine Liste aller gelöschten Dateien über die gesamte Lebensdauer eines Repositorys generiert?
305
git diff --name-status commit_hash
.Antworten:
Siehe Suchen und Wiederherstellen einer gelöschten Datei in einem Git-Repository
Wenn Sie nicht alle Informationen darüber wünschen, in welchem Commit sie entfernt wurden, können Sie dort einfach ein hinzufügen
grep delete
.quelle
git log --find-renames --diff-filter=D --summary | grep delete
git log --no-renames --diff-filter=D --summary | grep delete
grep delete
denn wenn die Festschreibungsnachricht das Wort "Löschen" enthält, wird sie ebenfalls erfasst. Verwenden Siegrep 'delete mode'
stattdessen.Das macht was du willst, denke ich:
... was ich gerade mehr oder weniger direkt aus dieser anderen Antwort genommen habe .
quelle
Wenn Sie nur die aktuell gelöschten Dateien anzeigen möchten, können Sie Folgendes verwenden:
Wenn Sie sie dann entfernen möchten (falls Sie sie gelöscht haben, ohne "git rm" zu verwenden), führt dies zu xargs git rm
quelle
git rm $(git ls-files --deleted)
Unter Berufung auf diese Antwort zum Stapelüberlauf.
Es ist eine ziemlich gute Möglichkeit, die Art der Änderung (A: Hinzugefügt, M: Geändert, D: Gelöscht) für jede Datei zu erhalten, die geändert wurde.
quelle
Und wenn Sie die Ergebnisse irgendwie einschränken möchten, ist dies eine schöne:
Sie erhalten alle Dateien, aus denen gelöscht wurde
some_dir
(siehe Befehl sed), zusammen mit der Festschreibungsnummer, in der dies geschieht. Jeder sed regex reicht aus (ich benutze dies, um gelöschte Dateitypen usw. zu finden)quelle
git log --diff-filter=D .
Da Windows keinen
grep
Befehl hat, hat dies in PowerShell für mich funktioniert:quelle
Select-String
?Alle gelöschten Dateien in some_branch anzeigen
oder
quelle
git diff origin/master...origin/some_branch --name-status | grep ^D
odergit diff origin/master...origin/some_branch --name-status --diff-filter=D
Dadurch erhalten Sie eine Liste aller Dateien, die in allen Zweigen gelöscht wurden, sortiert nach ihrem Pfad:
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.
quelle