Affiche le message de validation d'un commit donné dans git


244

J'ai besoin d'une commande de plomberie pour imprimer le message de validation d'un commit donné - rien de plus, rien de moins.


3
Si quelqu'un vient ici à la recherche d'un moyen d'imprimer un message de validation sur une seule ligne mais ne se soucie pas du hachage apparaissant au début, cela fonctionne:git show -s --oneline <commit>
waldyrious

Où devrions-nous ajouter la ligne pour imprimer le message de validation sur la machine serveur? Je voulais dire quel fichier de crochet?

Qu'entendez-vous par commande "plomberie"?
Bryan Ash

Réponses:


332

Ce n'est pas de la "plomberie", mais ça fera exactement ce que vous voulez:

$ git log --format=%B -n 1 <commit>

Si vous avez absolument besoin d'une commande "plomberie" (vous ne savez pas pourquoi c'est une exigence), vous pouvez utiliser rev-list:

$ git rev-list --format=%B --max-count=1 <commit>

Bien rev-listqu'imprimera également le commit sha (sur la première ligne) en plus du message de commit.


4
Fonctionne parfaitement pour moi - mais j'ai utilisé à la %s%bplace de %B(sur une boîte Linux)
adamk

17
%Best un spécificateur correct (au moins, dans Git 1.7.2, je ne sais pas quand il a été ajouté).
mipadi

2
%Ba été ajouté quelque temps après la 1.7.1 (probablement en 1.7.1.1).
mipadi

1
En effet c'est - Git 1.7.2 apparemment. Merci beaucoup!
Mark Probst

Vous pouvez également utiliser: $ git log --format=%B -n 1 <commit> | cat -Cela vous donnera le message de validation et pas de validation sha, et vous pouvez le "pipe". J'utilise en fait cela dans le cadre de mon script CI.
Paulo Muñoz

138

git showest plus une commande de plomberie que git log, et a les mêmes options de formatage:

git show -s --format=%B SHA1

9
Et si vous voulez juste la première ligne ("sujet"), utilisez à la %splace de %B.
ntc2 du

13
(Je préfère cela à la réponse acceptée "log" ou "rev-list", car il s'agit d'une opération de validation unique, plutôt que d'une liste limitée à 1 entrée.)
Rich

17

Pas de plomberie, mais je les ai dans mon .gitconfig:

lsum = log -n 1 --pretty=format:'%s'
lmsg = log -n 1 --pretty=format:'%s%n%n%b'

C'est "dernier résumé" et "dernier message". Vous pouvez fournir une validation pour obtenir le résumé ou le message de cette validation. (J'utilise 1.7.0.5 donc je n'ai pas% B.)


Vous pouvez passer l'argument -n comme paramètre. Ainsi, au lieu de ne renvoyer que le dernier commit, vous pouvez le faire renvoyer les 5 derniers commits. Ici, le changement nécessaire lsum = "! F () {git log -n $ 1 --pretty = format: '% s';}; f" lmsg = "! F () {git log -n $ 1 --pretty = format : '% s% n% n% b';}; f "Trouvé ici stackoverflow.com/questions/7005513/… Vous venez d'exécuter ce git lsum 5
kuklei

15

Cela vous donnera une liste très compacte de tous les messages pour une heure spécifiée.

git log --since=1/11/2011 --until=28/11/2011 --no-merges --format=%B > CHANGELOG.TXT

4

J'ai commencé à utiliser

git show-branch --no-name <hash>

Cela semble être plus rapide que

git show -s --format=%s <hash>

Les deux donnent le même résultat


1
Cela ne montre que la première ligne (% s), pas tout le message de validation ("rien de plus, rien de moins", comme l'a écrit le demandeur). Si vous avez un moyen de faire show-branch avec% B, alors ce serait utile.
Canonical Chris

3

J'utilise shortlog pour cela:

$ git shortlog master..
Username (3):
      Write something
      Add something
      Bump to 1.3.8 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.