689 votes

La sortie la plus courte possible du journal git contenant l'auteur et la date.

Comment puis-je afficher une sortie du journal git avec (au moins) ces informations :

* author
* commit date
* change

Je veux qu'il soit compressé à une ligne par entrée de journal. Quel est le format le plus court possible pour cela ?

(essayé --format=oneline mais cela n'indique pas la date)

4 votes

Peut-être que vous aimez ma version colorée : stackoverflow.com/a/49534733/2292766

1027voto

Jesper Rønn-Jensen Points 15212

git log --pretty=format:"%h%x09%an%x09%ad%x09%s"

a fait le travail. Ces sorties :

  fbc3503 mads    Thu Dec 4 07:43:27 2008 +0000   show mobile if phone is null...   
  ec36490 jesper  Wed Nov 26 05:41:37 2008 +0000  Cleanup after [942]: Using timezon
  ae62afd tobias  Tue Nov 25 21:42:55 2008 +0000  Fixed #67 by adding time zone supp
  164be7e mads    Tue Nov 25 19:56:43 2008 +0000  fixed tests, and a 'unending appoi
  93f1526 jesper  Tue Nov 25 09:45:56 2008 +0000  adding time.ZONE.now as time zone 
  2f0f8c1 tobias  Tue Nov 25 03:07:02 2008 +0000  Timezone configured in environment
  a33c1dc jesper  Tue Nov 25 01:26:18 2008 +0000  updated to most recent will_pagina

Inspiré par question stackoverflow : "sortie du journal git comme svn ls -v" j'ai découvert que je pouvais ajouter les paramètres exacts dont j'avais besoin.

Pour raccourcir la date (sans indiquer l'heure), utilisez --date=short

Au cas où vous seriez curieux de savoir quelles étaient les différentes options :
%h = hachage abrégé du commit
%x09 = tabulation (caractère pour le code 9)
%an = nom de l'auteur
%ad = date de l'auteur (le format respecte l'option --date=)
%s = sujet
De kernel.org/pub/software/scm/git/docs/git-log.html (section PRETTY FORMATS) par commentaire de Vivek.

13 votes

... et il est également utile d'ajouter date=short comme le suggère cdunn2001 dans une autre réponse

17 votes

Mon oneliner (court) préféré consiste maintenant à intervertir la date avant l'auteur et à utiliser la date courte : git log --pretty=format:"%h %ad%x09%an%x09%s" --date=short

199 votes

Mettez-y de la couleur et montrez aussi les références : git log --pretty=format:'%C(yellow)%h %Cred%ad %Cblue%an%Cgreen%d %Creset%s' --date=short

258voto

andsens Points 910

J'utilise ces deux paramètres .gitconfig :

[log]
  date = relative
[format]
  pretty = format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset

%ad est la date d'auteur, qui peut être remplacée par --date ou l'option spécifiée dans la strophe [log] de .gitconfig. J'aime la date relative parce qu'elle donne un sentiment immédiat de la date à laquelle les choses ont été faites. La sortie ressemble à ceci :

6c3e1a2 2 hours ago you@me.com lsof is a dependency now.
0754f18 11 hours ago you@me.com Properly unmount, so detaching works.
336a3ac 13 hours ago you@me.com Show ami registration command if auto register fails
be2ad45 17 hours ago you@me.com Fixes #6. Sao Paolo region is included as well.
5aed68e 17 hours ago you@me.com Shorten while loops

Tout cela est bien sûr en couleur, ce qui permet de distinguer facilement les différentes parties d'une ligne de journal. C'est également la valeur par défaut lorsque vous tapez git log à cause de la section [format].

MISE À JOUR DE 2014 : Puisque git supporte maintenant le padding, j'ai une belle modification de la version ci-dessus :

pretty = format:%C(yellow)%h %Cblue%>(12)%ad %Cgreen%<(7)%aN%Cred%d %Creset%s

Cela aligne à droite les dates relatives et à gauche les noms des participants, ce qui donne un aspect de colonne agréable à regarder.

Capture d'écran

  ss#1

MISE À JOUR 2016 : Puisque la signature de commit GPG devient une chose, j'ai pensé mettre à jour ce post avec une version qui inclut la vérification de la signature (dans la capture d'écran, c'est la lettre magenta juste après le commit). Une courte explication de ce drapeau :

%G? : affiche "G" pour une bonne signature (valide), "B" pour une mauvaise signature, "U" pour une bonne signature dont la validité est inconnue et "N" pour une absence de signature.

Les autres changements sont les suivants :

  • Les couleurs sont maintenant supprimées si la sortie est sur autre chose que le tty (ce qui est utile pour le grepping, etc.).
  • git log -g contient maintenant le sélecteur de reflog.
  • Sauver 2 parenthèses sur les refnames et les mettre à la fin (pour préserver l'alignement des colonnes)
  • Tronquer les dates relatives si elles sont trop longues (par ex. 3 years, 4.. )
  • Raccourcir les noms des commettants (cela peut être un peu court pour certains, changez simplement le nom du commettant dans la colonne de droite) %<(7,trunc) ou consultez le Fonctionnalité git .mailmap pour raccourcir les noms des commiteurs)

Voici la configuration :

pretty = format:%C(auto,yellow)%h%C(auto,magenta)% G? %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(7,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D

Dans l'ensemble, l'alignement des colonnes est maintenant beaucoup mieux préservé au détriment de quelques caractères (espérons-le) inutiles. N'hésitez pas à modifier si vous avez des améliorations à apporter, j'aimerais que la couleur du message dépende de la signature d'un commit, mais cela ne semble pas possible pour le moment.

Capture d'écran

Screenshot of git log

4 votes

Vous pouvez raccourcir encore plus les lignes en utilisant un carte postale . J'ai abrégé les noms de mes collègues sur mon lieu de travail pour ne garder que leur prénom :-)

2 votes

Les réponses concernant le format --pretty sont bonnes, et le tig donne de l'interactivité sans configuration requise, mais celle-ci est brillante - elle donne la sortie d'une ligne demandée (avec de la couleur pour démarrer !) en utilisant la commande standard 'git log'. C'est très bien.

0 votes

Lorsque j'utilise --droite-gauche, je n'obtiens pas le message > < plus de marques. J'ai essayé d'ajouter %m au format, mais ensuite > apparaît à chaque fois, même pour une git log . Avez-vous des idées pour que les marques se comportent normalement avec le format ?

123voto

knittl Points 64110
git log --pretty=format:"%H %an %ad"

utiliser --date= pour définir un format de date

git log --pretty=format:"%H %an %ad" --date=short

1 votes

Super ! La prochaine fois, je n'utiliserai probablement que %h au lieu de %H, car le hachage n'a aucun sens pour mes yeux d'humain :)

3 votes

Cool ! Je n'étais pas au courant de --date=short

4 votes

Je lance juste cette information (avec 8 ans de retard) : le hachage peut sembler absurde, mais c'est un outil utile si vous voulez sélectionner ou comparer les commits. Souvent on liste le hash non pas parce qu'il a une signification, mais parce qu'il a utiliser

57voto

Joe Generic Points 189

tig est une alternative possible à l'utilisation de la journal git disponible sur les principales distributions *nix open source.

Sur debian ou ubuntu essayez d'installer et d'exécuter comme suit :

$ sudo apt-get install tig

Pour les utilisateurs de macs, brew à la rescousse :

$ brew install tig

(le tig est installé)

$ tig

(le journal est affiché dans le pager comme suit, avec le hash du commit courant affiché en bas)

2010-03-17 01:07 ndesigner      changes to sponsors list
2010-03-17 00:19 rcoder         Raise 404 when an invalid year is specified.
2010-03-17 00:06 rcoder         Sponsors page now shows sponsors' level.
-------------------------- skip some lines ---------------------------------
[main] 531f35e925f53adeb2146dcfc9c6a6ef24e93619 - commit 1 of 32 (100%)

Comme markdown ne prend pas en charge la coloration du texte, imaginez : colonne 1 : bleu ; colonne 2 : vert ; colonne 3 : couleur de texte par défaut. Dernière ligne, surlignée. Appuyez sur Q o q pour sortir.


tig justifie les colonnes sans bords irréguliers ce qu'une tabulation ascii (%x09) ne garantit pas.

Pour un format court de la date capital engagé D (note : minuscules d ouvre une vue diff). Configurez-le de façon permanente en ajoutant show-date = short dans ~/.tigrc ; ou dans une [tig] dans .git/configure ou ~/.gitconfig.

Pour voir un changement complet :

  • touchez Entrez . Un sous-volet s'ouvre dans la moitié inférieure de la fenêtre.
  • utiliser k , j pour faire défiler les modifications dans le sous-volet.
  • en même temps, utilisez la fonction en haut , en bas pour passer d'un engagement à l'autre.

Comme tig est séparé de git et apparemment spécifique à *nix, il nécessite probablement cygwin pour être installé sous Windows. Mais pour fedora Je crois que les commandes d'installation sont $ su , (enter root password) , # yum install tig . Pour freebsd essayez % su , (enter root password) , # pkg_add -r tig .


Au fait, le tig est bon pour bien plus qu'une vue rapide de la bûche : Captures d'écran & Manuel

0 votes

Veuillez fournir un exemple complet. Rédaction tig dans ma console me donne simplement une erreur -bash: tig: command not found

11 votes

Wow. cet outil est fantastique, et étonnamment rapide ! brew install tig

0 votes

Si vous utilisez mac, brew install tig

38voto

Sean Points 276
git log --pretty=format:'%h %ad %s (%an)' --date=short  

o

git log --pretty=format:'%h %ad %s | %an' --date=short  

...en reprenant la réponse de cdunn2001 ci-dessus : Je supprimerais l'e=mail de l'auteur et n'inclurais que le nom de l'auteur, comme Jesper et knittl, mais en respectant l'idée de cdunn2001 de maintenir la sortie en colonnes de largeur constante pour faciliter la lecture (excellente idée !). Cependant, au lieu d'une colonne séparée justifiée à gauche pour le nom de l'auteur, je place ce drapeau à la fin de la commande avec une parenthèse ou je le décale avec un pipe. (Cela peut être n'importe quel caractère qui sert d'aide visuelle à la lecture de la sortie... bien qu'il puisse être judicieux d'éviter les slashs arrière ou avant afin de ne pas confondre la sortie avec un répertoire ou autre).

Exemple de sortie :

6fdd155 2015-08-10 Fixes casting error in doSave | John Doe
c4f4032 2015-08-10 Fix for IE save. Add help button. | Jane
29a24a6 2015-08-10 Fixes bug in Course | Mac

Prograide.com

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.

Powered by:

X