registrar los primeros 10 en git

91

Dos preguntas:

  1. Cómo mostrar las primeras 10 confirmaciones en git de principio a fin. (sin rama)
  2. Cómo especificar el índice de confirmación y registrarlo. (muestra el segundo o el tercero)

Sé que git usa parent para vincular la confirmación, es fácil registrar la confirmación de principio a fin. me gusta:git log HEAD~10

Pero necesito consultar de principio a fin, ¿es posible?

yohan zhou
fuente
Desplácese hasta la respuesta de @kostix
Muhammad Umer

Respuestas:

60

Simplemente registre todo con el formato de una línea y finalice la salida:

git log  --pretty=oneline | tail -n 10 
CharlesB
fuente
¡Excelente! Eso es lo que estoy buscando. Tks @CharlesB.
yohan zhou
3
O utilice git rev-list HEAD | tail -n 10para obtener las 10 ID en la lista, que luego puede mostrar en el formato que desee (no limitado al método de una línea).
torek
17
tailparece perder el bonito color que obtengo en mi consola git. Pasar un parámetro git log --oneline -10como en la otra respuesta funciona como esperaba.
James Hulse
4
Esta es claramente la forma Unix de núcleo duro, lol. Consulte la respuesta de @kostix.
9301293
1
La desventaja de este método es que solo puedo ver mis confirmaciones enviadas.
Jack '
255
git log -10

Mostraría 10 últimas confirmaciones que coincidan con la especificación de revisión (una especificación faltante significa "todas las confirmaciones").

Ver página de manual:

git help log

sección Commit Limiting

-<number>, -n <number>, --max-count=<number>
    Limit the number of commits to output.
kostix
fuente
6
simple y no depende de tailestar disponible en su plataforma.
10 de
8
& no se mete con el formato / coloración de git. Esta debería ser la respuesta aceptada x100
kuzyn
10
No lo que quería el operador: quería el first10, no el latest.
Timo
1
@Timo, muy posiblemente sí, pero la pregunta tal como se indica está abierta a interpretación, y muchas personas parecen terminar votando mi respuesta solo por estas diferencias abiertas. Entonces, aunque técnicamente estoy de acuerdo con usted, vamos a mantenerlo como está, supongo ;-) Entre las sugerencias técnicamente correctas, me gusta más el comentario del torek a la respuesta aceptada.
kostix
@kostix "Cómo mostrar las primeras 10 confirmaciones en git de principio a fin" no está "abierto a interpretación" en lo que a mí respecta. Obviamente, está pidiendo las primeras 10 confirmaciones, no las últimas .
Bobby Jack
30

Aquí mi enfoque,

Para obtener las primeras 10 confirmaciones:

git log -n 10

-n es número

Adicional Para obtener las siguientes 10 confirmaciones, omita las primeras 10:

git log --skip=10 -n 10
Nayagam
fuente
Creo que esta debería ser la respuesta aceptada. El uso de tail hará que --graph deje de funcionar en git log
relief.melone
Esta debe ser la respuesta aceptada. funciona como un encanto para mí
Doogle
también pierde el color de la fuente en la consola usando tail. esta es la respuesta correcta
CESCO
14

Para obtener las últimas 10 confirmaciones:

git log HEAD~10..HEAD

Para obtenerlos en el orden más antiguo al más nuevo:

git log --reverse HEAD~10..HEAD

Tenga en cuenta que si hay fusiones, esto puede mostrar más de 10 confirmaciones; agregue --first-parentsi solo desea atravesar el primer padre de cada rama.

Para obtener más detalles, consulte la documentación de git rev-list.


Editar: Ya obtuvo una respuesta útil arriba para "mostrar confirmaciones cerca del inicio del historial" (nuevamente, vea las advertencias sobre múltiples DAG de confirmaciones no conectadas en un repositorio). Pero también puede hacer, por ejemplo:

git log --no-walk `git rev-list HEAD | tail -n 10`

y:

git log --no-walk `git rev-list --reverse HEAD | head -n 10`

dependiendo del orden en el que desee obtener los resultados.

torek
fuente
Tks por tu respuesta. Pero no necesito las últimas 10 confirmaciones, sino la primera. Para ser específico, si la confirmación es ABCDEFG (HEAD). ¿Cómo registrar el ABC y cómo registrar C por el índice 2?
yohan zhou
Oh! No hay garantía de que haya una única "primera confirmación", pero si la hay, vea el enlace que agregó @CharlesB.
torek
El camino puede ser trabajo. de alguna manera natural? git log --pretty = oneline | wc -l git log HEAD ~ <El número menos uno o índice>
yohan zhou
Gracias por la respuesta. Esto es lo que necesitaba para evitar las opciones de estilo '-10' en mis alias de git. que aceptan argumentos numéricos.
vicTROLLA
11

el mejor resultado viene con la combinación de las dos mejores respuestas:

git log --pretty=oneline -10
andrej
fuente
1
Gracias, utilizo esto como un alias de git para mostrar rápidamente las confirmaciones recientes sin llenar mi terminal. Llamé al alias lkj = log --pretty=oneline --abbrev-commit -10. Ahora me doy cuenta de que no responde la pregunta del OP, pero vine aquí buscando el simple cambio de número.
Paul Rougieux
4

Simplemente registre todo al revés -1 significa listar un registro

git log  --reverse -1
nickleefly
fuente
3

Usaría el siguiente comando de sintaxis simple;

git log -10 --oneline
RAVI PATEL
fuente
1
¡Piense que esta es la forma más eficiente!
Nishant
0

Porque ... más detalle: p

  1. Cómo mostrar las primeras 10 confirmaciones en git de principio a fin. (sin rama)
  2. Cómo especificar el índice de confirmación y registrarlo. (muestra el segundo o el tercero)

Por (sin rama), es posible que esté preguntando sobre la reflogcadena de ascendencia en lugar de sobre una determinada. Lo siguiente no tiene nada que ver con la rama en la que se encuentra.

git log -g --pretty=oneline | tail -10

<sha> HEAD@{###}: action: summary (old)
<sha> HEAD@{###}: action: summary (older)
...
<sha> HEAD@{###}: action: summary (oldest)
  • -ges --walk-reflogsEn lugar de caminar por la cadena de ascendencia de compromiso, recorra las entradas de reflog.
  • agregar |cut -d ' ' -f 2|tr -d ':' > logpara registrar solo el índice de confirmación de reflog.

A continuación se muestran los antepasados ​​más antiguos de la rama actualmente desprotegida.

git log --reverse --pretty=oneline | head -10 | cat -n

1 <sha> summary (oldest)
2 <sha> summary (second)
  • --reverse Imprima las confirmaciones en orden inverso.
  • No se puede usar simplemente -n 10o -10porque se rompe--reverse
  • cat -n agrega números de línea (¿confirmar índice?)

aquí
fuente
0

En caso de que alguien quiera algo más que un registro de una línea de git:

git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'

donde 11al final debe establecerse en1 más de la cantidad de confirmaciones que desea.

Como se señala aquígit log --reverse -n 10 , no funciona como lo necesita. ( Supongo que debería ser no conmutativo para darte la capacidad de elegir las primeras 10 confirmaciones en orden inverso o las últimas 10 confirmaciones 🤪)

Cameron Stone
fuente