2011-10-12 17 views
39

Tengo un par de repositorios git que pertenecen juntos, y un archivo simple de lote/bash para recorrerlos. A menudo los recorro con un comando de registro para ver rápidamente en qué estado se encuentran. Esto funciona muy bien, excepto por una cosa: si el mensaje de confirmación es más largo que el número de caracteres mi consola es amplia (o tiene varias líneas), git muestra la línea, luego una nueva línea con (END) y tengo que presionar q para continuar (supongo que canaliza la salida a través de más o algo así). Ejemplo:¿Cómo hacer que git log no solicite continuar?

> gitloop . "git log --decorate=short --pretty=oneline -n1" 
18629ae238e9d5832cb3535ec88274173337a501 (HEAD, origin/master, master) short log 

625fb891b9b0b8648459b07ace662ae3b7773c7f (HEAD, origin/master, origin/HEAD, master) short log 

dc0838118266ba8570ea338c1faddfe8af0387bb (HEAD, origin/work, origin/master, work, master) oops loooooooooooooong log 
-(END) 

Esto es un inconveniente que tengo que presionar q un par de tiempo, mientras que sólo me gustaría ver a todos esos oneliners de una sola vez.

¿Cómo puedo desactivar este comportamiento (preferiblemente mientras se mantiene este formato de registro)?

+1

posible duplicado de [¿por qué tengo que golpear q al final de git log] (http://stackoverflow.com/questions/2364978/why-do-i-have-to-hit-q -at-the-end-of-git-log) – Sgoettschkes

Respuesta

71

Git tiene una opción para desactivar el localizador:

git --no-pager log --decorate=short --pretty=oneline -n1 

Si sus cortes de buscapersonas líneas y desea conservar ese comportamiento, ya sea a la tubería cut ...

git --no-pager log --decorate=short --pretty=oneline -n1 | cut -c 1-$COLUMNS 

... o establecer la variable de entorno GIT_PAGER antes de la invocación:

GIT_PAGER="cut -c 1-${COLUMNS-80}" git --no-pager log --decorate=short --pretty=oneline -n1 
+0

¿Hay alguna manera de hacer que '--no-pager' sea el valor predeterminado o incluso mejor en un acceso directo para esta opción cuando sea necesario? Pensé en aliasing 'gitnp' a' git --no-pager', pero creo que hay una mejor solución. –

+1

@IslamAzab, podría alias 'git' a'/usr/bin/git --no-pager', lo que desactivaría el localizador para todas sus llamadas a git. – mrkmg

+0

@WarrenP 'git' no tiene un buscapersonas integrado. En cambio, sigue la filosofía de Unix y usa todo lo que tienes en '$ PAGER'. 'git' simplemente siempre usa' $ PAGER' en lugar de hacerlo solo al azar a diferencia de muchas otras herramientas mal escritas. El único '' git' mágico que tiene es que si '$ LESS' es * no definido *, definirá' $ LESS' como valor 'FRX'. Consulte https://github.com/git/git/blob/master/Documentation/config.txt#L766 para obtener más detalles. –

0

Usted PIP a menos -F en caso de que -no-pager no funcione para usted.

git log --decorate --oneline -5 | less -F 
Cuestiones relacionadas