Cela fonctionne également pour git show. git show --name-only SHA1.
August Lilleaas
78
git diff --name-status [TAG|SHA1]montre également quelles opérations ont été effectuées sur les fichiers
reconbot
2
vous pouvez également faire: git diff --name-only HEAD @ {3} HEAD @ {0} pour les validations exactes que vous souhaitez comparer.
b01
7
@AugustLilleaas utilisant réellement show ne montrera que les 2 commits spécifiques, si vous avez des commits entre ces 2, ils seront laissés de côté
chrisan
4
Comme indiqué ci-dessous, git diff --name-statusne 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-statusdonne un peu plus d'informations, mais toujours agréable et dense ... ce sera ma nouvelle commande goto;)
travc
417
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 logversion.
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
Il se trouve que je dis git diff --name-status et cela a donné le "fichier ajouté".
aartist
1
Pour git log, il doit avoir deux points entre les SHA, comme SHA1..SHA2, et le deuxième SHA n'est pas facultatif, il devrait donc ressembler à ceci: git log --name-status --oneline [SHA1 .. SHA2]
twasbrillig
Existe-t-il un moyen d'exclure certains fichiers / certains types de fichiers?
août
3
L' --relative[=<path>]option peut vous aider, je ne suis pas sûr. Sinon, il y a toujours | erep -v '(.tmp|.foo|.dontwant)$'...
artfulrobot
80
Il semble que personne n'ait mentionné l'interrupteur --stat:
C'était vraiment utile! J'aimerais pouvoir simplement dire git diffstatus masterou similaire, ce qui déclenche ce qui précède.
oma
3
Ou git show --pretty=format: --name-only origin/master...
sschuberth
Vous ne pourrez peut-être pas en faire un alias git, mais vous pouvez certainement le mettre dans votre .bashrc.
Fred
3
Ou encore plus simple: git diff --name-only HEAD...master(notez les trois points). Pour une explication détaillée, voir ici .
ostrokach
1
On dirait que la réponse est généralement correcte! Simple git diff --name-only master..branchne 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-basej'ai 228 vs 171)
x'ES
21
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 greppeut affiner davantage les choses:
Les regex sont sympas et peuvent en effet presque tout faire. Dans ce cas, cependant, il y a aussi --diff-filterqui donne cette fonctionnalité en natif, ce qui signifie moins de chances de résultats incorrects (par exemple, faux positifs)
Jasper
8
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é, à showfilespartir de votre référentiel git.
alias showfiles='git show --pretty="format:" --name-only'
Notez également que si vous souhaitez simplement voir les fichiers modifiés entre le dernier commit et celui qui le précède. Cela fonctionne bien:git show --name-only
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=onelinene me donne que le SHA et le message de commit en utilisant git 2.10.1
damd
3
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
$ 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-statusj'ai écrit l' extension git-diffview git qui rend une vue arborescente hiérarchique de ce qui a changé entre deux chemins.
Réponses:
où il vous suffit d'inclure suffisamment de SHA pour identifier les commits. Vous pouvez également faire, par exemple
pour voir les différences entre le dixième dernier commit et le cinquième plus récent (ou plus).
la source
git show --name-only SHA1
.git diff --name-status [TAG|SHA1]
montre également quelles opérations ont été effectuées sur les fichiersgit 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 justegit show --name-status
donne un peu plus d'informations, mais toujours agréable et dense ... ce sera ma nouvelle commande goto;)est comme --name-only, sauf que vous obtenez un simple préfixe vous indiquant ce qui est arrivé au fichier (modifié, supprimé, ajouté ...)
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>...]
à lagit 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
la source
--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
:Il y a aussi
--numstat
et
--shortstat
la source
Mais pour voir les fichiers modifiés entre votre branche et son ancêtre commun avec une autre branche (disons origine / maître):
la source
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 HEAD...master
(notez les trois points). Pour une explication détaillée, voir ici .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. (sansmerge-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:
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:Cela n'affichera alors que les fichiers ajoutés
myotherbranch
.la source
--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écutezsource ~/.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.la source
git config --global alias.showfiles 'show --pretty="format:" --name-only'
à fairegit showfiles
.Cela montrera les changements dans les fichiers:
la source
Notez également que si vous souhaitez simplement voir les fichiers modifiés entre le dernier commit et celui qui le précède. Cela fonctionne bien:
git show --name-only
la source
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.
la source
git log --pretty=oneline
ne me donne que le SHA et le message de commit en utilisant git 2.10.1Comme l'a dit artfulrobot dans sa réponse:
Mon exemple:
la source
Juste pour quelqu'un qui doit se concentrer uniquement sur les fichiers Java, voici ma solution:
la source
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ôtformat:
qu'enlève l'espace séparateur entre les validations.la source
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.la source