Frage Wie listet man nur die Dateinamen auf, die sich zwischen zwei Commits geändert haben?


Ich habe eine Reihe von Commits im Repo. Ich möchte eine Liste von Dateien sehen, die zwischen zwei Commits geändert wurden - von SHA1 zu SHA2.

Welchen Befehl soll ich verwenden?


1474
2017-10-12 01:48


Ursprung


Antworten:


git diff --name-only SHA1 SHA2

wo Sie nur genügend SHA einbeziehen müssen, um die Commits zu identifizieren. Sie können zum Beispiel auch tun

git diff --name-only HEAD~10 HEAD~5

um die Unterschiede zwischen dem zehnten letzten Commit und dem fünften letzten (oder so) zu sehen.


2006
2017-10-12 01:51



git diff --name-status [SHA1 [SHA2]]

ist wie --name-only, außer dass Sie ein einfaches Präfix bekommen, das Ihnen mitteilt, was mit der Datei passiert ist (modifiziert, gelöscht, hinzugefügt ...)

git log --name-status --oneline [SHA1..SHA2]

ist ähnlich, aber Commits werden nach der Commit-Nachricht aufgelistet, so dass Sie sehen können, wenn eine Datei geändert wurde.

  • Wenn Sie interessiert sind, was genau mit bestimmten Dateien / Ordnern passiert ist, können Sie sie anhängen -- <filename> [<filename>...] zum git log Ausführung.

  • Wenn Sie sehen möchten, was für ein einzelnes Commit passiert ist, nennen Sie es SHA1, dann tun Sie es
    git log --name-status --oneline [SHA1^..SHA1]

Dateistatusflags:
M modifiziert - Datei wurde geändert
C copy-edit - Datei wurde kopiert und geändert
R Umbenennen-Bearbeiten - Datei wurde umbenannt und geändert
Ein hinzugefügt - Datei wurde hinzugefügt
D gelöscht - Datei wurde gelöscht
U unmerged - Datei hat Konflikte nach einer Zusammenführung


342
2017-07-26 09:26



Aber um zu sehen, dass sich die Dateien zwischen Ihrem Zweig und dem gemeinsamen Vorfahren mit einem anderen Zweig (zB Ursprung / Master) geändert haben:

git diff --name-only `git merge-base origin/master HEAD`

41
2018-03-20 17:10



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(-)

27
2017-10-19 21:50



Um @ artfulrobots Antwort zu ergänzen, wenn Sie geänderte Dateien zwischen zwei Zweigen anzeigen möchten:

git diff --name-status mybranch..myotherbranch

Sei vorsichtig bei der Rangfolge. Wenn Sie den neueren Zweig zuerst platzieren, werden Dateien als gelöscht anstatt hinzugefügt angezeigt.

Hinzufügen eines grep kann Dinge weiter verfeinern:

git diff --name-status mybranch..myotherbranch | grep "A\t"

Das zeigt dann nur die hinzugefügten Dateien an myotherbranch.


17
2017-10-22 10:42



Fügen Sie unten Ihren Alias ​​hinzu ~/.bash_profile, dann renne, source ~/.bash_profile; Jetzt müssen Sie immer die aktualisierten Dateien im letzten Commit sehen, ausführen, showfiles von Ihrem Git-Repository.

alias showfiles='git show --pretty="format:" --name-only'

8
2018-04-10 19:38



Dies zeigt die Änderungen in Dateien:

git diff --word-diff SHA1 SHA2

7
2017-12-04 15:10



Benutzen Gitprotokoll --pretty = oneline> C: \ Dateiname.log

das wird nur eine oneline protokollieren (--pretty = oneline) das ist der Name der geänderten Datei. Außerdem werden alle Details zu Ihrer Ausgabedatei protokolliert.


3
2017-09-10 10:59



Beachten Sie auch, wenn Sie nur die geänderten Dateien zwischen dem letzten Commit und dem davor sehen möchten. Das funktioniert gut: git show --name-only


2
2017-10-01 20:42



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

1
2018-05-03 12:37