Frage Wie listet man alle Dateien eines Commits auf?


Ich suche nach einem einfachen git Befehl, der eine schön formatierte Liste aller Dateien liefert, die Teil des Commits waren, das durch einen Hash (SHA1) gegeben wurde, ohne irgendwelche zusätzlichen Informationen.

Ich habe versucht:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

Obwohl es die Dateien auflistet, enthält es auch unerwünschte Diff-Informationen für jede Datei.

Gibt es noch einen anderen? git Befehl, der nur die Liste liefert, die ich will, so dass ich es vermeiden kann, es von der Pars zu analysieren git show Ausgabe?


2171
2018-01-08 12:26


Ursprung


Antworten:


Bevorzugter Weg (Weil es ein ist Sanitär Befehl; soll programmatisch sein):

$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js

Ein anderer Weg (weniger bevorzugt für Skripte, weil es ein Porzellan Befehl; soll benutzerorientiert sein)

$ git show --pretty="" --name-only bd61ad98    
index.html
javascript/application.js
javascript/ie6.js

  • Das --no-commit-id unterdrückt die Commit-ID-Ausgabe.
  • Das --pretty Argument gibt eine leere Formatzeichenfolge an, um den Gruft am Anfang zu vermeiden.
  • Das --name-only Argument zeigt nur die betroffenen Dateinamen an (Danke Hank).
  • Das -r Argument besteht darin, in Unterbäume zu rekrutieren

2853
2018-01-08 13:02



Wenn Sie eine Liste der geänderten Dateien erhalten möchten:

git diff-tree --no-commit-id --name-only -r <commit-ish>

Wenn Sie eine Liste aller Dateien in einem Commit erhalten möchten, können Sie verwenden

git ls-tree --name-only -r <commit-ish>

189
2018-01-14 19:22



Das nehme ich einfach an gitk ist dafür nicht erwünscht. Versuchen Sie in diesem Fall git show --name-only <sha>.


180
2018-01-08 12:34



Ich persönlich benutze die Kombination von --stat und --eine Linie mit dem Show Befehl:

git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD

Wenn Sie die Statistiken zum Hinzufügen / Entfernen nicht möchten / möchten, können Sie sie ersetzen --stat mit - Nur-Name

git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD

113
2017-07-11 23:21



Kürzlich musste ich alle geänderten Dateien zwischen zwei Commits auflisten. Also habe ich diesen (auch * nixspezifischen) Befehl benutzt

git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq

Aktualisieren: Oder wie Ethan unten zeigt

git diff --name-only START_COMMIT..END_COMMIT

Verwenden --name-status enthält auch die Änderung (hinzugefügt, geändert, gelöscht usw.) neben jeder Datei

git diff --name-status START_COMMIT..END_COMMIT

58
2018-04-26 12:23



Sie können auch tun

git log --name-only

und Sie können verschiedene Commits durchsuchen, Nachrichten und die geänderten Dateien festschreiben.

Geben Sie q ein, um die Eingabeaufforderung zurückzugeben.


56
2018-05-27 01:20



Einfachste Form:

git show --stat (hash)

Das ist leichter zu merken und es gibt Ihnen alle Informationen, die Sie benötigen.

Wenn Sie nur die Namen der Dateien möchten, können Sie die hinzufügen --name-only Möglichkeit.

git show --stat --name-only (hash)


48
2017-07-16 00:06



ich benutze geändert alias ein ziemlich oft. Um es einzurichten:

git config --global alias.changed 'show --pretty="format:" --name-only'

dann:

git changed (lists files modified in last commit)   
git changed bAda55 (lists files modified in this commit)
git changed bAda55..ff0021 (lists files modified between those commits)

Ähnliche Befehle, die nützlich sein können:

git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only

45
2018-04-29 13:13



Standard-Git-Diff-Befehl verwenden (auch gut für Skripting):

git diff --name-only <sha>^ <sha>

Wenn Sie auch den Status der geänderten Dateien haben wollen:

git diff --name-status <sha>^ <sha>

Dies funktioniert gut mit Merge-Commits.


34
2018-04-29 14:53



$ git log 88ee8 ^ .. 88ee8 - nur -name --pretty = "format:"

23
2018-01-08 14:11



Ich benutze dies, um eine Liste modifizierter Dateien zwischen zwei Changesets zu erhalten:

git diff --name-status <SHA1> <SHA2> | cut -f2

15
2018-03-28 07:37