Imprimir mensaje de confirmación de una confirmación dada en git


244

Necesito un comando de plomería para imprimir el mensaje de confirmación de una confirmación determinada, nada más y nada menos.


3
Si alguien viene aquí en busca de una manera de imprimir una sola línea al mensaje de confirmación, pero no se preocupa por el hash que aparece al principio, las siguientes obras:git show -s --oneline <commit>
waldyrious

¿Dónde debemos agregar la línea para imprimir el mensaje de confirmación en la máquina del servidor? Me refería a qué archivo de gancho?

¿Qué quiere decir con el comando "plomería"?
Bryan Ash

Respuestas:


332

No es "plomería", pero hará exactamente lo que quieras:

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

Si necesita absolutamente un comando de "plomería" (no estoy seguro de por qué es un requisito), puede usar rev-list:

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

Aunque rev-listtambién imprimirá el commit sha (en la primera línea) además del mensaje de confirmación.


44
Funcionó perfectamente para mí, pero lo usé en %s%blugar de %B(en una caja de Linux)
adamk

17
%Bes un especificador correcto (al menos, en Git 1.7.2, no estoy seguro de cuándo se agregó).
mipadi

2
%Bse agregó en algún momento después de 1.7.1 (probablemente en 1.7.1.1).
mipadi

1
De hecho lo es - Git 1.7.2 aparentemente. ¡Muchas gracias!
Mark Probst

También puede usar: $ git log --format=%B -n 1 <commit> | cat -Eso le dará el mensaje de confirmación y no confirmará sha, y puede "canalizarlo". De hecho, uso esto como parte de mi script de CI.
Paulo Muñoz

138

git showes más un comando de plomería que git log, y tiene las mismas opciones de formato:

git show -s --format=%B SHA1

99
Y si solo desea la primera línea ("asunto"), use en %slugar de %B.
ntc2

13
(Prefiero esto a la respuesta aceptada "log" o "rev-list", ya que es una operación de confirmación única, en lugar de una lista restringida a 1 entrada.)
Rico

17

No son fontanería, pero tengo estos en mi .gitconfig:

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

Eso es "último resumen" y "último mensaje". Puede proporcionar una confirmación para obtener el resumen o el mensaje de esa confirmación. (Estoy usando 1.7.0.5, así que no tengo% B).


Puede pasar el argumento -n como parámetro. Entonces, en lugar de devolver solo la última confirmación, puede hacer que devuelva las últimas 5 confirmaciones. Aquí el cambio es necesario lsum = "! F () {git log -n $ 1 --pretty = format: '% s';}; f" lmsg = "! F () {git log -n $ 1 --pretty = format : '% s% n% n% b';}; f "Lo encontré aquí stackoverflow.com/questions/7005513 /... Acabas de ejecutar este git lsum 5
kuklei

15

Esto le dará una lista muy compacta de todos los mensajes para un tiempo específico.

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

4

Empecé a usar

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

Parece ser más rápido que

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

Ambos dan el mismo resultado


1
Eso muestra solo la primera línea (% s), no todo el mensaje de confirmación ("nada más, nada menos", como escribió el autor de la pregunta). Si tiene una manera de hacer show-branch con% B, eso sería útil.
Canonical Chris

3

Yo uso shortlog para esto:

$ git shortlog master..
Username (3):
      Write something
      Add something
      Bump to 1.3.8 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.