Antworten:
git diff --name-only SHA1 SHA2
Hier müssen Sie nur genügend SHA hinzufügen, um die Commits zu identifizieren. Sie können dies beispielsweise auch tun
git diff --name-only HEAD~10 HEAD~5
um die Unterschiede zwischen dem zehnten letzten Commit und dem fünften letzten Commit (oder so) zu sehen.
git show --name-only SHA1
.
git diff --name-status [TAG|SHA1]
zeigt, welche Operationen auch an den Dateien durchgeführt wurden
git diff --name-status
scheint 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-status
gibt ein bisschen mehr Informationen, aber immer noch schön und dicht ... das wird mein neuer goto-Befehl sein;)
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 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
--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
:
$ git diff --stat HEAD~5 HEAD
.../java/org/apache/calcite/rex/RexSimplify.java | 50 +++++++++++++++++-----
.../apache/calcite/sql/fun/SqlTrimFunction.java | 2 +-
.../apache/calcite/sql2rel/SqlToRelConverter.java | 16 +++++++
.../org/apache/calcite/util/SaffronProperties.java | 19 ++++----
.../org/apache/calcite/test/RexProgramTest.java | 24 +++++++++++
.../apache/calcite/test/SqlToRelConverterTest.java | 8 ++++
.../apache/calcite/test/SqlToRelConverterTest.xml | 15 +++++++
pom.xml | 2 +-
.../apache/calcite/adapter/spark/SparkRules.java | 7 +--
9 files changed, 117 insertions(+), 26 deletions(-)
Es gibt auch --numstat
$ git diff --numstat HEAD~5 HEAD
40 10 core/src/main/java/org/apache/calcite/rex/RexSimplify.java
1 1 core/src/main/java/org/apache/calcite/sql/fun/SqlTrimFunction.java
16 0 core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
8 11 core/src/main/java/org/apache/calcite/util/SaffronProperties.java
24 0 core/src/test/java/org/apache/calcite/test/RexProgramTest.java
8 0 core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
15 0 core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
1 1 pom.xml
4 3 spark/src/main/java/org/apache/calcite/adapter/spark/SparkRules.java
und --shortstat
$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)
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:
git diff --name-only `git merge-base origin/master HEAD`
git diffstatus master
oder ähnliches, das löst das Obige aus.
git show --pretty=format: --name-only origin/master..
.
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. (ohne merge-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:
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 grep
Dose verfeinert die Dinge weiter:
git diff --name-status mybranch..myotherbranch | grep "A\t"
Daraufhin werden nur die hinzugefügten Dateien angezeigt myotherbranch
.
--diff-filter
eine Funktion, die diese Funktionalität nativ bietet, was eine geringere Wahrscheinlichkeit für falsche Ergebnisse (z. B. falsch positive Ergebnisse) bedeutet
Fügen Sie den folgenden Alias zu Ihrem hinzu ~/.bash_profile
und führen Sie ihn aus source ~/.bash_profile
. Jetzt können Sie jederzeit die aktualisierten Dateien im letzten Commit anzeigen, das showfiles
von Ihrem Git-Repository ausgeführt wird.
alias showfiles='git show --pretty="format:" --name-only'
git config --global alias.showfiles 'show --pretty="format:" --name-only'
zu machen git showfiles
.
Dies zeigt die Änderungen in Dateien:
git diff --word-diff SHA1 SHA2
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=oneline
gibt mir nur die SHA und die Commit-Nachricht mit Git 2.10.1
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
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 zu format:
entfernen.
Basierend auf habe git diff --name-status
ich die Git-Diffview- Git-Erweiterung geschrieben, die eine hierarchische Baumansicht der Änderungen zwischen zwei Pfaden darstellt.