Le journal de SVN a un mode "-v" qui sort les noms de fichiers des fichiers modifiés dans chaque commit, comme ceci:
jes5199 $ svn log -v -------------------------------------------------- ---------------------- r1 | jes5199 | 2007-01-03 14:39:41 -0800 (mer. 03 janv. 2007) | 1 ligne Chemins modifiés: A / AUTEURS A / COPIE A / ChangeLog A / ÉVOLUTION A / INSTALL A / MacOSX
Existe-t-il un moyen rapide d'obtenir une liste des fichiers modifiés dans chaque commit dans git?
git log
ne prend pas simplement en charge un-v
commutateur comme beaucoup l'attendent / le veulent? </gripe>Réponses:
Pour les noms de chemin complets des fichiers modifiés:
Pour les noms de chemin d'accès complets et l'état des fichiers modifiés:
Pour les noms de chemin abrégés et une liste de fichiers modifiés:
Il y a beaucoup plus d'options, consultez les documents .
la source
git log --numstat
. Voirgit help log
pour plus d'options.git log --name-only --oneline
est assez épatant aussi - une ligne colorée pour le commit, et un fichier par ligne. stackoverflow.com/a/14227496/1995714git log --name-status --find-renames
pour afficher les fichiers renommés au lieu de l'ajout + la suppression.--stat
abréviation de longs chemins; La largeur est configurable mais les histogrammes enveloppés sont plus difficiles à lire. D'autres formats, comme--numstat
toujours imprimer des chemins complets.--numstat
est à la ligne 946 de cette page de manuel à partir de git 2.22.00. C'est beaucoup plus d'options que la plupart des gens n'en ont besoin.REMARQUE: est obsolète, utilisez plutôt
git whatchanged
git log
Vous pouvez utiliser la commande
git whatchanged --stat
pour obtenir une liste des fichiers qui ont changé dans chaque commit (avec le message de commit).Références
la source
git show
est également une excellente commande.C'est un peu comme
svn diff
, mais vous pouvez lui passer un guide de validation et voir cette différence.la source
Si vous souhaitez obtenir les noms de fichiers uniquement sans le reste du message de validation, vous pouvez utiliser:
Cela peut ensuite être étendu pour utiliser les différentes options qui contiennent le nom du fichier:
Une chose à noter lors de l'utilisation de cette méthode est qu'il y a des lignes vides dans la sortie qui devront être ignorées. Son utilisation peut être utile si vous souhaitez voir les fichiers qui ont été modifiés sur une branche locale, mais qui ne sont pas encore envoyés à une branche distante et il n'y a aucune garantie que la dernière version de la télécommande a déjà été récupérée. Par exemple :
Affiche tous les fichiers qui ont été modifiés sur la branche locale, mais qui n'ont pas encore été fusionnés avec la branche principale de la télécommande.
la source
git log --stat --pretty="format:" $branchName
,. Ainsi, par exemplegit log --stat --pretty="format:" $(git rev-parse --abbrev-ref HEAD)
,. Pendant que j'y suis, voici l'incantation exacte qui a fini par être pertinente pour mon but:git log --name-only --pretty="format: " master..$(git rev-parse --abbrev-ref HEAD)
J'utilise cela quotidiennement pour afficher l'historique des fichiers qui ont changé:
Pour faire court, ajoutez un alias dans votre
.gitconfig
en faisant:la source
J'utilise ceci:
qui génère une liste de fichiers uniquement et leur état (ajouté, modifié, supprimé):
la source
git diff --stat HEAD^!
affiche les fichiers modifiés et le nombre de lignes ajoutées / supprimées pour le dernier commit (HEAD
).Il me semble qu'il n'y a pas de commande unique pour obtenir une sortie concise composée uniquement de noms de fichiers et de nombres de lignes ajoutés et supprimés pour plusieurs validations à la fois, j'ai donc créé mon propre script bash pour cela:
Pour être appelé par exemple.
./changed_files 99
pour obtenir les modifications sous une forme concise deHEAD
àHEAD~99
. Peut être canalisé par exemple. àless
.la source
git diff --stat HEAD..master
pour montrer la différence entre HEAD et master, ou cela n'existait-il pas lorsque vous avez publié votre réponse en 2012?HEAD
etmaster
. Ce sont deux choses différentes.Je trouve que ce qui suit est l'affichage idéal pour répertorier les fichiers modifiés par validation dans un format concis:
la source
Un résumé des réponses avec un exemple de sortie
Il s'agit d'un référentiel local avec cinq validations simples.
Crédits à @ CB-Bailey @ Peter-Suwara @Gaurav @ Omer-Dagan @xsor @Hazok @nrz @ptc
la source
Une autre commande utile serait
git diff-tree <hash>
où le hachage peut également être une plage de hachage (indiquée par une<old>..<new>
notation). Un exemple de sortie:Les champs sont:
mode source, mode dest, hachage source, hachage dest, état, nom de fichier
Les statuts sont ceux que vous attendez: D (supprimé), A (ajouté), M (modifié) etc. Voir la page de manuel pour une description complète.
la source
Je les utilise généralement pour obtenir les journaux:
la source