Tengo un par de repositorios de git que van juntos, y un archivo simple por lotes / bash para recorrerlos. A menudo los recorro con un comando de registro para ver rápidamente en qué estado se encuentran. Esto funciona bien, excepto por una cosa: si el mensaje de confirmación es más largo que el número de caracteres, mi consola es ancha (o tiene varias líneas), git muestra la línea, luego una nueva línea con (FIN) y tengo que presionar q para continuar (supongo que canaliza la salida a través de más o algo así). Ejemplo:
> 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 bastante inconveniente ya que tengo que presionar q un par de veces, mientras que me gustaría ver todos esos delineadores de una sola vez.
¿Cómo puedo desactivar este comportamiento (preferiblemente manteniendo este formato de registro)?
Respuestas:
Git tiene una opción para deshabilitar el buscapersonas:
Si su buscapersonas corta líneas y desea conservar ese comportamiento, canalice a
cut
...... o establezca la variable de entorno
GIT_PAGER
antes de la invocación:fuente
--no-pager
el valor predeterminado o incluso mejor en un acceso directo para esta opción cuando sea necesario? Pensé en creargitnp
un aliasgit --no-pager
, pero creo que hay una solución mejor.git
para/usr/bin/git --no-pager
deshabilitar el buscapersonas para todas sus llamadas a git.git
no tiene localizador incorporado. En cambio, sigue la filosofía de Unix y usa lo que tenga$PAGER
.git
simplemente siempre usa en$PAGER
lugar de hacerlo solo al azar, a diferencia de muchas otras herramientas mal escritas. La única magia quegit
tiene es que si no$LESS
está definida , definirá$LESS
a valorFRX
. Consulte github.com/git/git/blob/master/Documentation/config.txt#L766 para obtener más detalles.git
simplemente proporciona una anulaciónGIT_PAGER
que le permitirá definir un valor personalizado que se usará en lugar dePAGER
cuando git necesite paginación.Otra solución para el problema de deshabilitar permanentemente el buscapersonas específicamente cuando se usa un
log
subcomando:solo para el repositorio actual:
git config pager.log false
para su instalación de git (es decir, todos los repositorios en su máquina):
git config --global pager.log false
Como puede adivinar, lo mismo funciona si se necesita que el buscapersonas esté encendido o apagado para algunos otros subcomandos de forma selectiva.
P.ej. para el
branch
subcomando (que imprime ramas) serágit config pager.branch false
La solución propuesta es posiblemente más elegante en comparación con
usando
git --no-pager
cada vez que ejecuta cierto comando.Porque es muy posible que no desee escribirlo cada vez.
especificando
git --no-pager
como un alias paragit
Porque, muy posible, desea evitar la configuración global implícita O desea que el paginador esté habilitado en algunos casos.
dependen de algunas variables de entorno como
PAGER
oGIT_PAGER
.Porque para hacer eso, debe asegurarse de que estén configurados en su sesión de terminal actual. Y, si desea que se establezcan en algún valor personalizado automáticamente cada vez que se crea su nueva terminal, debe modificar uno de los archivos de arranque de shell, como por ejemplo
~/.bashrc
. No es un gran problema. Pero estos archivos bootstrap con frecuencia también son alterados por otras aplicaciones y contienen muchas otras cosas, no solo las que usa Git. Entonces, en teoría, es mejor especificar configuraciones relacionadas con git usando engit config
lugar de ponerlas en eg~/.bashrc
.La solución alternativa para la desactivación
pager
de todos los subcomandos es especificarcat
como el git utilidad va a utilizar para paginación:git config core.pager cat
Ogit config --global core.pager cat
Mi respuesta es una reformulación de la siguiente:
"¿evitar que git diff use un localizador?"
https://stackoverflow.com/a/6986231/6103242
Se hace referencia para señalar otra discusión relevante.
fuente
Desactive el buscapersonas para todos los comandos:
fuente
Lo canaliza a menos -F en caso de que --no-pager no funcione para usted.
fuente