Réponses:
git diff --name-only SHA1 SHA2
où il vous suffit d'inclure suffisamment de SHA pour identifier les commits. Vous pouvez également 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).
git show --name-only SHA1
.
git diff --name-status [TAG|SHA1]
montre également quelles opérations ont été effectuées sur les fichiers
git diff --name-status
ne semble pas vouloir afficher les fichiers ajoutés. @sschuberth a souligné git show
, ce qui ne semble pas fonctionner correctement pour moi: git show --pretty=format: --name-status
. Faire juste git show --name-status
donne un peu plus d'informations, mais toujours agréable et dense ... ce sera ma nouvelle commande goto;)
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 validations sont répertoriées 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 les ajouter -- <filename> [<filename>...]
à la 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 copier-éditer - Le fichier a été copié et modifié
R renommer-éditer - Le fichier a été renommé et modifié
A ajouté - Le fichier a été ajouté
D supprimé - Le fichier a été supprimé
U non fusionné - Le fichier présente des conflits après une fusion
--relative[=<path>]
option peut vous aider, je ne suis pas sûr. Sinon, il y a toujours | erep -v '(.tmp|.foo|.dontwant)$'
...
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(-)
Mais pour voir les fichiers modifiés entre votre branche et son ancêtre commun avec une autre branche (disons origine / maître):
git diff --name-only `git merge-base origin/master HEAD`
git diffstatus master
ou similaire, ce qui déclenche ce qui précède.
git show --pretty=format: --name-only origin/master..
.
git diff --name-only master..branch
ne correspond pas à la liste github PR. De cette façon, plus précis. Mais de toute façon, j'ai 173 fichiers changés contre 171 dans github PR. (sans merge-base
j'ai 228 vs 171)
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 priorité. Si vous placez la branche la plus récente en premier, elle affichera les fichiers comme supprimés plutôt que ajoutés.
L'ajout d'un grep
peut affiner davantage les choses:
git diff --name-status mybranch..myotherbranch | grep "A\t"
Cela n'affichera alors que les fichiers ajoutés myotherbranch
.
--diff-filter
qui donne cette fonctionnalité en natif, ce qui signifie moins de chances de résultats incorrects (par exemple, faux positifs)
Ajoutez l'alias ci-dessous à votre ~/.bash_profile
, puis exécutez source ~/.bash_profile
; maintenant, à tout moment, vous devez voir les fichiers mis à jour dans le dernier commit, exécuté, à showfiles
partir de votre référentiel git.
alias showfiles='git show --pretty="format:" --name-only'
git config --global alias.showfiles 'show --pretty="format:" --name-only'
à faire git showfiles
.
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 ligne (--pretty = en ligne) qui est le nom du fichier modifié. Enregistre également tous les détails dans votre fichier de sortie.
git log --pretty=oneline
ne me donne que le SHA et le message de commit en utilisant git 2.10.1
Comme l'a 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
Juste pour quelqu'un qui doit se concentrer uniquement sur les fichiers Java, voici ma solution:
git diff --name-status SHA1 SHA2 | grep '\.java$'
Ce qui suit fonctionne bien pour moi:
$ git show --name-only --format=tformat: SHA1..SHA2
Il peut également être utilisé avec un seul commit:
git show --name-only --format=tformat: SHA1
qui est pratique pour une utilisation dans Jenkins où vous êtes fourni avec une liste de SHA changeSet, et que vous souhaitez les parcourir pour voir quels fichiers ont été modifiés.
Ceci est similaire à quelques réponses ci-dessus, mais en utilisant tformat:
plutôt format:
qu'enlève l'espace séparateur entre les validations.
Basé sur git diff --name-status
j'ai écrit l' extension git-diffview git qui rend une vue arborescente hiérarchique de ce qui a changé entre deux chemins.