Ich bin auf der Suche nach einem einfachen git
-Befehl, der eine schön formatierte Liste aller Dateien liefert, die Teil des Commits waren, angegeben durch einen Hash (SHA1), ohne fremde Informationen.
Ich habe es versucht:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Er listet zwar die Dateien auf, enthält aber auch unerwünschte Diff-Informationen für jede Datei.
Gibt es einen anderen git
-Befehl, der nur die gewünschte Liste liefert, so dass ich es vermeiden kann, sie aus der git show
-Ausgabe zu parsen?
Bevorzugter Weg (weil es sich um einen klempnerischen Befehl handelt, der programmatisch sein soll):
$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js
Anderer Weg (weniger bevorzugt für Skripte, da es sich um einen Porzellan-Befehl handelt; gedacht für die Benutzeroberfläche)
$ git show --pretty="" --name-only bd61ad98
index.html
javascript/application.js
javascript/ie6.js
--no-commit-id
unterdrückt die Ausgabe der Commit-ID.--pretty
gibt einen leeren Formatstring an, um den Schrott am Anfang zu vermeiden.--name-only
zeigt nur die Dateinamen an, die betroffen waren (Danke Hank). Verwenden Sie stattdessen --name-status
, wenn Sie sehen wollen, was mit jeder Datei passiert ist (Dgeloescht, Mgeaendert, Ahinzugefuegt)Eine Kombination aus "git show --stat
" (danke Ryan) und ein paar sed-Befehlen sollte die Daten für Sie kürzen:
git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"
Das wird nur die Liste der geänderten Dateien ausgeben.