Dos preguntas:
- Cómo mostrar las primeras 10 confirmaciones en git de principio a fin. (sin rama)
- 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?
Respuestas:
Simplemente registre todo con el formato de una línea y finalice la salida:
fuente
git rev-list HEAD | tail -n 10
para 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).tail
parece perder el bonito color que obtengo en mi consola git. Pasar un parámetrogit log --oneline -10
como en la otra respuesta funciona como esperaba.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:
sección
Commit Limiting
fuente
tail
estar disponible en su plataforma.first
10, no ellatest
.Aquí mi enfoque,
Para obtener las primeras 10 confirmaciones:
-n es número
Adicional Para obtener las siguientes 10 confirmaciones, omita las primeras 10:
fuente
Para obtener las últimas 10 confirmaciones:
Para obtenerlos en el orden más antiguo al más nuevo:
Tenga en cuenta que si hay fusiones, esto puede mostrar más de 10 confirmaciones; agregue
--first-parent
si 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:
y:
dependiendo del orden en el que desee obtener los resultados.
fuente
el mejor resultado viene con la combinación de las dos mejores respuestas:
fuente
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.Simplemente registre todo al revés -1 significa listar un registro
fuente
Usaría el siguiente comando de sintaxis simple;
fuente
Porque ... más detalle: p
Por (sin rama), es posible que esté preguntando sobre la
reflog
cadena 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
-g
es--walk-reflogs
En lugar de caminar por la cadena de ascendencia de compromiso, recorra las entradas de reflog.|cut -d ' ' -f 2|tr -d ':' > log
para 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
--reverse
Imprima las confirmaciones en orden inverso.-n 10
o-10
porque se rompe--reverse
cat -n
agrega números de línea (¿confirmar índice?)fuente
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
11
al 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 🤪)fuente