Dies funktioniert auch für Git-Shows. git show --name-only SHA1.
August Lilleaas
78
git diff --name-status [TAG|SHA1]zeigt, welche Operationen auch an den Dateien durchgeführt wurden
Reconbot
2
Sie können auch Folgendes tun: git diff - only-name HEAD @ {3} HEAD @ {0} für die genauen Commits, die Sie vergleichen möchten.
B01
7
@AugustLilleaas, das tatsächlich show verwendet, zeigt nur die 2 spezifischen Commits an. Wenn Sie Commits zwischen diesen 2 haben, werden sie
weggelassen
4
Wie unten erwähnt, git diff --name-statusscheint es nicht möglich zu sein, hinzugefügte Dateien anzuzeigen. @sschuberth wies darauf hin git show, was für mich richtig zu funktionieren scheint : git show --pretty=format: --name-status. Nur zu tun git show --name-statusgibt ein bisschen mehr Informationen, aber immer noch schön und dicht ... das wird mein neuer goto-Befehl sein;)
travc
417
git diff --name-status [SHA1 [SHA2]]
ist wie --name-only, außer dass Sie ein einfaches Präfix erhalten, das Ihnen sagt, was mit der Datei passiert ist (geändert, gelöscht, hinzugefügt ...)
git log --name-status --oneline [SHA1..SHA2]
ist ähnlich, aber Commits werden nach der Commit-Nachricht aufgelistet, sodass Sie sehen können, wann eine Datei geändert wurde.
Wenn Sie daran interessiert sind, was mit bestimmten Dateien / Ordnern passiert ist, können Sie -- <filename> [<filename>...]die git logVersion anhängen .
Wenn Sie sehen möchten, was bei einem einzelnen Commit passiert ist, nennen Sie es SHA1 und dann git log --name-status --oneline [SHA1^..SHA1]
Dateistatus-Flags:
M geändert - Datei wurde geändert
C Kopieren-Bearbeiten - Datei wurde kopiert und geändert
R Umbenennen-Bearbeiten - Datei wurde umbenannt und geändert
A hinzugefügt - Datei wurde hinzugefügt
D gelöscht - Datei wurde gelöscht
U nicht zusammengeführt - Datei hat Konflikte nach einer Zusammenführung
Ich sage zufällig git diff --name-status und es gab die 'hinzugefügte Datei'.
Aartist
1
Für das Git-Protokoll müssen zwei Punkte zwischen den SHAs vorhanden sein, z. B. SHA1..SHA2, und das zweite SHA ist nicht optional. Daher sollte es folgendermaßen aussehen: Git-Protokoll --name-status --oneline [SHA1 .. SHA2]
Twasbrillig
Gibt es eine Möglichkeit, bestimmte Dateien / bestimmte Dateitypen auszuschließen?
aug
3
Die --relative[=<path>]Option kann Ihnen helfen, ich bin mir nicht sicher. Ansonsten gibt es immer | erep -v '(.tmp|.foo|.dontwant)$'...
Artfulrobot
80
Es scheint, dass niemand den Schalter erwähnt hat --stat:
Die akzeptierte Antwort ist korrekt, aber dies ist sehr nützlich und gibt Ihnen ein paar zusätzliche Informationen. Vielen Dank!
Kontur
2
Einverstanden ist dies eine nützlichere Antwort, da sie die Diff-Statistiken enthält.
Internetross
52
Aber um zu sehen, wie sich die Dateien zwischen Ihrem Zweig und seinem gemeinsamen Vorfahren mit einem anderen Zweig (z. B. Ursprung / Master) geändert haben:
Das war wirklich nützlich! Ich wünschte, ich könnte einfach sagen git diffstatus masteroder ähnliches, das löst das Obige aus.
Oma
3
Oder git show --pretty=format: --name-only origin/master...
Sschuberth
Möglicherweise können Sie es nicht zu einem Git-Alias machen, aber Sie können es definitiv in Ihre .bashrc-Datei einfügen.
Fred
3
Oder noch einfacher: git diff --name-only HEAD...master(beachten Sie die drei Punkte). Eine ausführliche Erklärung finden Sie hier .
Ostrokach
1
Sieht nach meist richtiger Antwort aus! Einfach git diff --name-only master..branchentspricht nicht der PR-Liste von Github. Auf diese Weise genauer. Aber trotzdem habe ich 173 geänderte Dateien vs 171 in Github PR. (ohne merge-baseich habe 228 vs 171)
x'ES
21
Um die Antwort von @ artfulrobot zu ergänzen, wenn Sie geänderte Dateien zwischen zwei Zweigen anzeigen möchten:
git diff --name-status mybranch..myotherbranch
Seien Sie vorsichtig bei der Rangfolge. Wenn Sie den neueren Zweig zuerst platzieren, werden Dateien als gelöscht und nicht als angezeigt angezeigt.
Das Hinzufügen einer grepDose verfeinert die Dinge weiter:
Regexes sind nett und können in der Tat fast alles. In diesem Fall gibt es jedoch auch --diff-filtereine Funktion, die diese Funktionalität nativ bietet, was eine geringere Wahrscheinlichkeit für falsche Ergebnisse (z. B. falsch positive Ergebnisse) bedeutet
Jasper,
8
Fügen Sie den folgenden Alias zu Ihrem hinzu ~/.bash_profileund führen Sie ihn aus source ~/.bash_profile. Jetzt können Sie jederzeit die aktualisierten Dateien im letzten Commit anzeigen, das showfilesvon Ihrem Git-Repository ausgeführt wird.
alias showfiles='git show --pretty="format:" --name-only'
Beachten Sie auch, wenn Sie nur die geänderten Dateien zwischen dem letzten und dem vorherigen Commit anzeigen möchten. Das funktioniert gut:git show --name-only
Verwenden Sie git log --pretty = oneline> C: \ filename.log
Dadurch wird nur eine Online-Datei (--pretty = oneline) protokolliert, die den Namen der geänderten Datei enthält. Außerdem werden alle Details in Ihrer Ausgabedatei protokolliert.
git log --pretty=onelinegibt mir nur die SHA und die Commit-Nachricht mit Git 2.10.1
verdammt
3
Wie Artfulrobot in seiner Antwort sagte:
git diff --name-status [SHA1 [SHA2]]
Mein Beispiel:
git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997
4b95d595812211553070046bf2ebd807c0862cca
M views/layouts/default.ctp
M webroot/css/theme.css
A webroot/img/theme/logo.png
$ git show --name-only --format=tformat: SHA1..SHA2
Es kann auch mit einem einzigen Commit verwendet werden:
git show --name-only --format=tformat: SHA1
Dies ist praktisch für die Verwendung in Jenkins, wo Sie eine Liste der changeSet-SHAs erhalten und diese durchlaufen möchten, um festzustellen, welche Dateien geändert wurden.
Dies ähnelt einigen der obigen Antworten, verwendet jedoch den Trennraum zwischen den Commits , tformat:anstatt ihn zu format:entfernen.
Basierend auf habe git diff --name-statusich die Git-Diffview- Git-Erweiterung geschrieben, die eine hierarchische Baumansicht der Änderungen zwischen zwei Pfaden darstellt.
Antworten:
Hier müssen Sie nur genügend SHA hinzufügen, um die Commits zu identifizieren. Sie können dies beispielsweise auch tun
um die Unterschiede zwischen dem zehnten letzten Commit und dem fünften letzten Commit (oder so) zu sehen.
quelle
git show --name-only SHA1
.git diff --name-status [TAG|SHA1]
zeigt, welche Operationen auch an den Dateien durchgeführt wurdengit diff --name-status
scheint es nicht möglich zu sein, hinzugefügte Dateien anzuzeigen. @sschuberth wies darauf hingit show
, was für mich richtig zu funktionieren scheint :git show --pretty=format: --name-status
. Nur zu tungit show --name-status
gibt ein bisschen mehr Informationen, aber immer noch schön und dicht ... das wird mein neuer goto-Befehl sein;)ist wie --name-only, außer dass Sie ein einfaches Präfix erhalten, das Ihnen sagt, was mit der Datei passiert ist (geändert, gelöscht, hinzugefügt ...)
ist ähnlich, aber Commits werden nach der Commit-Nachricht aufgelistet, sodass Sie sehen können, wann eine Datei geändert wurde.
Wenn Sie daran interessiert sind, was mit bestimmten Dateien / Ordnern passiert ist, können Sie
-- <filename> [<filename>...]
diegit log
Version anhängen .Wenn Sie sehen möchten, was bei einem einzelnen Commit passiert ist, nennen Sie es SHA1 und dann
git log --name-status --oneline [SHA1^..SHA1]
Dateistatus-Flags:
M geändert - Datei wurde geändert
C Kopieren-Bearbeiten - Datei wurde kopiert und geändert
R Umbenennen-Bearbeiten - Datei wurde umbenannt und geändert
A hinzugefügt - Datei wurde hinzugefügt
D gelöscht - Datei wurde gelöscht
U nicht zusammengeführt - Datei hat Konflikte nach einer Zusammenführung
quelle
--relative[=<path>]
Option kann Ihnen helfen, ich bin mir nicht sicher. Ansonsten gibt es immer| erep -v '(.tmp|.foo|.dontwant)$'
...Es scheint, dass niemand den Schalter erwähnt hat
--stat
:Es gibt auch
--numstat
und
--shortstat
quelle
Aber um zu sehen, wie sich die Dateien zwischen Ihrem Zweig und seinem gemeinsamen Vorfahren mit einem anderen Zweig (z. B. Ursprung / Master) geändert haben:
quelle
git diffstatus master
oder ähnliches, das löst das Obige aus.git show --pretty=format: --name-only origin/master..
.git diff --name-only HEAD...master
(beachten Sie die drei Punkte). Eine ausführliche Erklärung finden Sie hier .git diff --name-only master..branch
entspricht nicht der PR-Liste von Github. Auf diese Weise genauer. Aber trotzdem habe ich 173 geänderte Dateien vs 171 in Github PR. (ohnemerge-base
ich habe 228 vs 171)Um die Antwort von @ artfulrobot zu ergänzen, wenn Sie geänderte Dateien zwischen zwei Zweigen anzeigen möchten:
Seien Sie vorsichtig bei der Rangfolge. Wenn Sie den neueren Zweig zuerst platzieren, werden Dateien als gelöscht und nicht als angezeigt angezeigt.
Das Hinzufügen einer
grep
Dose verfeinert die Dinge weiter:Daraufhin werden nur die hinzugefügten Dateien angezeigt
myotherbranch
.quelle
--diff-filter
eine Funktion, die diese Funktionalität nativ bietet, was eine geringere Wahrscheinlichkeit für falsche Ergebnisse (z. B. falsch positive Ergebnisse) bedeutetFügen Sie den folgenden Alias zu Ihrem hinzu
~/.bash_profile
und führen Sie ihn aussource ~/.bash_profile
. Jetzt können Sie jederzeit die aktualisierten Dateien im letzten Commit anzeigen, dasshowfiles
von Ihrem Git-Repository ausgeführt wird.quelle
git config --global alias.showfiles 'show --pretty="format:" --name-only'
zu machengit showfiles
.Dies zeigt die Änderungen in Dateien:
quelle
Beachten Sie auch, wenn Sie nur die geänderten Dateien zwischen dem letzten und dem vorherigen Commit anzeigen möchten. Das funktioniert gut:
git show --name-only
quelle
Verwenden Sie git log --pretty = oneline> C: \ filename.log
Dadurch wird nur eine Online-Datei (--pretty = oneline) protokolliert, die den Namen der geänderten Datei enthält. Außerdem werden alle Details in Ihrer Ausgabedatei protokolliert.
quelle
git log --pretty=oneline
gibt mir nur die SHA und die Commit-Nachricht mit Git 2.10.1Wie Artfulrobot in seiner Antwort sagte:
Mein Beispiel:
quelle
Nur für jemanden, der sich nur auf Java-Dateien konzentrieren muss, ist dies meine Lösung:
quelle
Folgendes funktioniert gut für mich:
$ git show --name-only --format=tformat: SHA1..SHA2
Es kann auch mit einem einzigen Commit verwendet werden:
git show --name-only --format=tformat: SHA1
Dies ist praktisch für die Verwendung in Jenkins, wo Sie eine Liste der changeSet-SHAs erhalten und diese durchlaufen möchten, um festzustellen, welche Dateien geändert wurden.
Dies ähnelt einigen der obigen Antworten, verwendet jedoch den Trennraum zwischen den Commits ,
tformat:
anstatt ihn zuformat:
entfernen.quelle
Basierend auf habe
git diff --name-status
ich die Git-Diffview- Git-Erweiterung geschrieben, die eine hierarchische Baumansicht der Änderungen zwischen zwei Pfaden darstellt.quelle