2012-04-27 13 views
44

dos preguntas:de registro primeros 10 en git

  1. Cómo mostrar los primeros 10 Aprobar de git de principio a fin. (sin rama)
  2. Cómo especificar el índice de confirmación y registrarlo. (muestre el segundo o tercero)

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

Pero necesito consultar desde el principio hasta el final, ¿es posible?

+0

relacionadas: [? ¿Cómo mostrar primero comprometerse por 'git log'] (http://stackoverflow.com/questions/ 5188914/how-to-show-first-commit-by-git-log) – CharlesB

+0

scroll to @kostix answer –

Respuesta

32

Simplemente entre todo con un formato de línea y la cola de la salida:

git log --pretty=oneline | tail -n 10 
+0

¡Genial! Eso es lo que estoy buscando. Tks @CharlesB. –

+2

O, use 'git rev-list HEAD | cola -n 10' para obtener los 10 ID a la lista, que luego puede mostrar en el formato que desee (no se limita al método de una línea). – torek

+8

'tail' parece perder la bonita coloración que obtengo en mi consola git. Pasar un parámetro como 'git log --oneline -10' como en la otra respuesta funciona como esperaba. –

7

para obtener los últimos 10 compromete:

git log HEAD~10..HEAD 

Para conseguirlos en más antiguo a más reciente orden:

git log --reverse HEAD~10..HEAD 

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

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


Editar: Ya has obtenido una respuesta útil arriba para "mostrar confirmaciones cerca del inicio del historial" (de nuevo, consulta las advertencias sobre múltiples DAG de compromiso no conectados en un repositorio). Pero también se 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 de qué orden desea que los resultados.

+0

Gracias por su respuesta. Pero no necesito los últimos 10 commits, pero el primero. Para ser específico, si la confirmación es A-B-C-D-E-F-G (CABEZA). ¿Cómo registrar el A-B-C y cómo registrar C en el índice 2? –

+0

¡Oh! No hay garantía de que haya un solo "primer compromiso", pero si lo hay, consulte el enlace @CharlesB agregado. – torek

+0

El camino puede ser el trabajo. de alguna manera natural? git log --pretty = oneline | wc -l git log HEAD ~

129
git log -10 

mostraría 10 commits último juego de la especificación de revisión (que falta una especificación significa "todos los envíos").

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. 
+2

simple, y no depende de que 'tail' esté disponible en su plataforma. – tenpn

+5

y no se mezcla con el formateo/coloreado de git. Esta debería ser la respuesta aceptada x100 – kuzyn

+0

¡Esta es la respuesta correcta! Bonito. –

2

basta con acceder a revertir todo -1 significa un log lista

git log --reverse -1 
0

Porque ... más detalle: p

  1. Cómo mostrar los primeros 10 commit en git de principio a fin. (no branch)
  2. Cómo especificar el índice de compromiso y registrarlo.(Mostrar la segundo o tercer)

Por (ninguna rama), se puede preguntar acerca de la reflog en lugar de cualquier cadena dada la ascendencia. Lo siguiente no tiene nada que ver con la rama en la que se encuentra.

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

<sha> [email protected]{###}: action: summary (old) 
<sha> [email protected]{###}: action: summary (older) 
... 
<sha> [email protected]{###}: action: summary (oldest) 
  • -g es --walk-reflogs En lugar de caminar por la cadena de cometer ascendencia, caminar entries.q reflog
  • añadir |cut -d ' ' -f 2|tr -d ':' > log para registrar sólo el reflog cometer índice.

A continuación se muestran los primeros ancestros de la rama actualmente desprotegido.

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

1 <sha> summary (oldest) 
2 <sha> summary (second) 
  • --reverse salida los comete en orden inverso.
  • No se puede utilizar simplemente -n 10 o -10 ya que rompe --reverse
  • cat -n agrega números de línea

0

Aquí mi enfoque,

Para obtener primeros 10 commit (comprometen índice?):

git log -n 10 

-n es número

adicional Para obtener Después de 10 cometer saltar primero 10:

git log --skip=10 -n 10 
Cuestiones relacionadas