Question Comment lister uniquement les noms de fichiers qui ont changé entre deux validations?


J'ai un tas de commits dans le repo. Je veux voir une liste de fichiers modifiés entre deux commits - de SHA1 à SHA2.

Quelle commande devrais-je utiliser?


1474
2017-10-12 01:48


origine


Réponses:


git diff --name-only SHA1 SHA2

où vous avez seulement besoin d'inclure suffisamment de SHA pour identifier les commits. Vous pouvez aussi faire, par exemple

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

pour voir les différences entre le dixième dernier commit et le cinquième plus récent (ou plus).


2006
2017-10-12 01:51



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

est comme --name seulement, sauf que vous obtenez un simple préfixe vous indiquant ce qui est arrivé au fichier (modifié, supprimé, ajouté ...)

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

est similaire, mais les commits sont listés après le message de commit, ainsi vous pouvez voir quand un fichier a été changé.

  • si vous êtes intéressé par ce qui est arrivé à certains fichiers / dossiers, vous pouvez ajouter -- <filename> [<filename>...] au git log version.

  • Si vous voulez voir ce qui s'est passé pour un seul commit, appelez-le SHA1, puis faites
    git log --name-status --oneline [SHA1^..SHA1]

Indicateurs d'état du fichier:
M modifié - Le fichier a été modifié
C copy-edit - Le fichier a été copié et modifié
R renommer-modifier - Le fichier a été renommé et modifié
Un ajouté - Le fichier a été ajouté
D deleted - Le fichier a été supprimé
U non fusionné - Le fichier a des conflits après une fusion


342
2017-07-26 09:26



Mais pour voir les fichiers modifiés entre votre branche et son ancêtre commun avec une autre branche (disons origin / master):

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

41
2018-03-20 17:10



Il semble que personne n'a mentionné l'interrupteur --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(-)

Il y a aussi --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

et --shortstat

$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)

27
2017-10-19 21:50



Pour compléter la réponse de @ artfulrobot, si vous souhaitez afficher les fichiers modifiés entre deux branches:

git diff --name-status mybranch..myotherbranch

Faites attention à la précédence. Si vous placez la branche la plus récente en premier, les fichiers seront supprimés et non ajoutés.

Ajouter un grep peut affiner les choses plus loin:

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

Cela montrera alors seulement les fichiers ajoutés dans myotherbranch.


17
2017-10-22 10:42



Ajouter l'alias ci-dessous à votre ~/.bash_profile, puis exécutez, source ~/.bash_profile; maintenant quand vous avez besoin de voir les fichiers mis à jour dans la dernière validation, exécutez, showfiles à partir de votre dépôt git.

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

8
2018-04-10 19:38



Cela montrera les changements dans les fichiers:

git diff --word-diff SHA1 SHA2

7
2017-12-04 15:10



Utilisation git log --pretty = oneline> C: \ nomdefichier.log

qui ne connecte qu'un seul fichier (--pretty = oneline) c'est le nom du fichier modifié. Enregistre également tous les détails dans votre fichier de sortie.


3
2017-09-10 10:59