tipos - ¿qué hace git log-oneline?
Desactivar el buscapersonas en git solo para el comando de ocultación (4)
A partir de 1.7.7.3, git config --global pager.stash false
logra esto.
Por lo general, me gusta el uso del buscapersonas en git, pero para git stash
el localizador me molesta. Al llamar a la git stash list
, no quiero que me muestren las tres líneas de salida en el buscapersonas; me obliga a presionar q
solo para que la salida no vuelva a estar disponible al escribir el siguiente comando de git stash pop
.
Una solución sería utilizar
git --no-pager stash list
Pero eso es mucho escribir (soy perezoso). Siguiendo la página man de git config
, lo intenté.
git config --global pager.stash false
pero esto no parece hacer lo que dice la documentación (en realidad, no noté ningún efecto). Entonces lo intenté
git config --global alias.stash "--no-pager stash"
De nuevo sin ningún efecto notable.
La configuración se actualiza correctamente, por ejemplo.
git config pager.stash
false
Simplemente no tiene ningún efecto. ¿Qué me estoy perdiendo? ¿Y cómo puedo lograr que el git stash
no use el buscapersonas?
Alternativamente, puede configurar less
para salir si hay menos de una pantalla de salida:
export LESS=''-F''
O, verbalmente:
export LESS=''--quit-if-one-screen''
Si tiene colores en su salida de git, probablemente también querrá pasar la -r
:
export LESS=''-F -r''
Parece un alijo, y cualquier otro comando no incorporado (escrito como un script de shell, en lugar de en C) se pierde en el paso de configuración del buscapersonas. Envié una nota a la lista de correo de git preguntando sobre esto; Parece que es un problema conocido, pero no es totalmente trivial de solucionar.
La razón principal por la que no ve ningún efecto en su alias es que git ignora silenciosamente los alias para los comandos incorporados; la idea es que nunca se desea que un comando sea inaccesible. Para que el alias tenga la oportunidad de ejecutarse, debe asignarle un nombre diferente al de stash
.
Sin embargo, creo que no se permite que los alias simples afecten el entorno en el que se ejecuta un comando git, que generalmente incluye las opciones pasadas al propio git
. Si utilizo un alias como el tuyo:
git config alias.foo --no-pager stash
git foo
fatal: alias ''foo'' changes environment variables
Si quieres hacerlo correctamente, deberías usar !git --no-pager stash
, para que genere una subshell y vuelva a invocar git.
Otra solución temporal, ya que es un script de shell, sería ir a editar libexec/git-core/git-stash
directamente. Simplemente vaya a buscar la función list_stash
y agregue la --no-pager
a su llamada a git log
, o para cubrir todo el script, establezca GIT_PAGER=cat
en la parte superior.
stll = "!git --no-pager stash list"
es tu amigo.