Comment lister uniquement les noms de fichier qui ont changé entre deux propagations?

j'ai un tas de commits dans le dépôt. Je veux voir une liste de fichiers modifiés entre deux propagations-de SHA1 à SHA2.

Quelle commande dois-je utiliser?

1522
demandé sur Chris Stryczynski 2009-10-12 05:48:06

11 réponses

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 la dixième dernier commit et le cinquième plus tard (ou presque).

2068
répondu Peter 2009-10-12 01:51:34
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 propagation, donc vous pouvez voir quand un fichier a été modifié.

  • si vous êtes intéressé par ce qui est arrivé à certains fichiers/dossiers, vous pouvez ajouter -- <filename> [<filename>...] à la version 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]

drapeaux de statut de fichier:

M modifié-le fichier a été modifié

C copier-éditer le Fichier a été copié et modifié

R renommez-modifier le Fichier a été renommé et modifié

Un ajout - Fichier a été ajouté

D supprimé-le fichier a été supprimé

U dissociées Fichier a des conflits après une fusion

351
répondu artfulrobot 2017-03-10 22:15:48

mais pour voir les fichiers changés entre votre branche et son ancêtre commun avec une autre branche (dire origine/maître):

git diff --name-only `git merge-base origin/master HEAD`
43
répondu Tim James 2017-02-23 19:08:21

il semble que personne n'ait 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(-)
34
répondu leeyuiwah 2017-10-19 21:50:40

pour compléter la réponse de @artfulrobot, si vous voulez montrer les fichiers modifiés entre deux branches:

git diff --name-status mybranch..myotherbranch

attention sur la priorité. Si vous placez la nouvelle branche en premier, alors elle montrerait des fichiers supprimés plutôt qu'ajoutés.

Ajouter un grep peut affiner les choses plus loin:

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

qui affichera alors seulement les fichiers ajoutés dans myotherbranch .

19
répondu Max MacLeod 2013-12-29 13:17:26

ajoutez l'alias ci-dessous à votre ~/.bash_profile , puis lancez, source ~/.bash_profile ; maintenant à tout moment vous avez besoin de voir les fichiers mis à jour dans la dernière propagation, Lancez, showfiles à partir de votre dépôt git.

alias showfiles='git show --pretty="format:" --name-only'
8
répondu Zorayr 2015-04-10 19:38:17

cela affichera les changements dans les fichiers:

git diff --word-diff SHA1 SHA2
7
répondu Julio Marins 2014-12-04 15:10:40

Use git log -- pretty=oneline >C:\filename.log

qui n'enregistre qu'une seule ligne (--pretty=oneline) c'est le nom du fichier modifié. Aussi va enregistrer tous les détails dans votre fichier de sortie.

3
répondu Agni 2014-09-10 10:59:35

notez aussi, si vous voulez juste voir les fichiers modifiés entre le dernier commit et celui d'avant. Cela fonctionne très bien: git show --name-only

2
répondu Parris 2015-10-01 20:42:14

comme le dit artfulrobot 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
2
répondu Jaime Montoya 2018-05-03 12:37:07

basé sur git diff --name-status j'ai écrit le git-diffview extension git qui rend une vue d'arbre hiérarchique de ce qui a changé entre deux chemins.

0
répondu Bernard Opic 2015-11-03 09:39:46