J'ai un tas de commits dans le référentiel. Je veux voir une liste des fichiers modifiés entre deux commits - de SHA1 a SHA2 .
Quelle commande dois-je utiliser ?
J'ai un tas de commits dans le référentiel. Je veux voir une liste des fichiers modifiés entre deux commits - de SHA1 a SHA2 .
Quelle commande dois-je utiliser ?
git diff --name-status [TAG|SHA1]
montre aussi quelles opérations ont été faites sur les fichiers
Vous pouvez aussi faire : git diff --name-only HEAD@{3} HEAD@{0} pour les commits exacts que vous voulez comparer.
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 commit, afin que vous puissiez 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>...]
a la git log
version.
si vous voulez voir ce qui s'est passé pour un seul commit, appelez-le SHA1, puis faitesgit log --name-status --oneline [SHA1^..SHA1]
Drapeaux d'état des fichiers :
Drapeau
Nom
Signification
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é
A
ajouté
Le fichier a été ajouté
D
supprimé
Le fichier a été supprimé
U
non immergé
Le fichier a des conflits après une fusion
Pour git log, il doit y avoir deux points entre les SHA, comme SHA1..SHA2, et le second SHA n'est pas optionnel, donc il devrait ressembler à ceci : git log --name-status --oneline [SHA1..SHA2]
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 existe également --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(-)
C'était vraiment utile ! J'aimerais pouvoir dire simplement git diffstatus master
ou similaire, qui déclenche ce qui précède.
Vous ne pourrez peut-être pas en faire un alias git, mais vous pourrez certainement le mettre dans votre .bashrc.
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
Faites attention à la préséance. Si vous placez la branche la plus récente en premier, les fichiers seront affichés comme supprimés plutôt qu'ajoutés.
Ajout d'un grep
peut affiner les choses :
git diff --name-status mybranch..myotherbranch | grep "A\t"
Cela ne montrera alors que les fichiers ajoutés dans myotherbranch
.
Les regex sont agréables et peuvent en effet faire presque tout. Dans ce cas, cependant, il y a aussi --diff-filter
qui offre cette fonctionnalité de manière native, ce qui réduit les risques de résultats incorrects (faux positifs, par exemple).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Pour un commit et son parent : stackoverflow.com/questions/424071/
1 votes
Vous devriez changer le titre de la question... vous ne voulez pas lister les noms de fichiers qui ont changé... vous voulez lister les noms des fichiers qui ont changé. Notez qu'il est possible de changer le nom des fichiers sans modifier leur contenu.