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

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 dois-je utiliser?

    git diff --name-only SHA1 SHA2 

    où il suffit 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 engagement et le cinquième dernier (ou presque).

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

    est comme –name-only, 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 validation, vous pouvez donc voir quand un fichier a été modifié.

    • Si vous êtes intéressé par ce qui est arrivé à certains fichiers / dossiers, vous pouvez append -- [...] à la version du git log .

    • 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 rename-edit – Le fichier a été renommé et modifié
    Un ajout – Le fichier a été ajouté
    D supprimé – Le fichier a été supprimé
    U non fusionné – Le fichier a des conflits après une fusion

    Mais pour voir les fichiers modifiés entre votre twig et son ancêtre commun avec une autre twig (par exemple origine / maître):

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

    Il semble que personne n’a mentionné le commutateur --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(-) 

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

     git diff --name-status mybranch..myotherbranch 

    Faites attention à la préséance. Si vous placez la nouvelle twig en premier, elle affichera les fichiers comme supprimés plutôt que ajoutés.

    L’ajout d’un grep peut affiner les choses:

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

    Cela affichera alors uniquement les fichiers ajoutés dans myotherbranch .

    Ajoutez l’alias ci-dessous à votre ~/.bash_profile , puis exécutez la source ~/.bash_profile ; maintenant, chaque fois que vous avez besoin de voir les fichiers mis à jour lors de la dernière validation, exécution, showfiles de votre repository git.

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

    Cela montrera les changements dans les fichiers:

     git diff --word-diff SHA1 SHA2 

    Utilisez git log –pretty = oneline> C: \ filename.log

    qui enregistrera uniquement une oneline (–pretty = oneline) qui correspond au nom du fichier modifié. Enregistre également tous les détails dans votre fichier de sortie.

    Notez également que si vous souhaitez simplement voir les fichiers modifiés entre le dernier commit et celui qui l’a précédé. Cela fonctionne bien: git show --name-only

    Comme Artfulrobot l’a dit dans sa réponse:

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

    Mon exemple:

     git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997 4b95d595812211553070046bf2ebd807c0862cca M views/layouts/default.ctp M webroot/css/theme.css A webroot/img/theme/logo.png 

    Basé sur git diff --name-status j’ai écrit l’extension git-diffview git qui affiche une vue hiérarchique de ce qui a changé entre deux chemins.