¿Hay un interruptor de línea de comando para pasar git diff
y otros comandos que usan el less
buscapersonas por defecto?
Sé que puedo canalizarlo a cat, pero eso elimina todo el resaltado de sintaxis.
Sé que puedo configurar el localizador en el .gitconfig global para cat by GITPAGER=cat
(o algo así); pero quiero tener buscapersonas a veces (dependiendo del tamaño de la diferencia).
Pero, preferiría un cambio de línea de comando si hay uno; y no puedo encontrar uno, revisando las páginas del manual.
core.pager 'less -+F -+X'
sería una forma más reciente de eliminar esas opciones. Vea mi respuesta a continuación .less
con git (varía según laless
versión): unix.stackexchange.com/questions/107315/…Respuestas:
--no-pager
a Git le dirá que no use un buscapersonas. Pasando la opción-F
a,less
le indicará que no busque si la salida cabe en una sola pantalla.Uso:
Otras opciones de los comentarios incluyen:
fuente
core.pager
variable de configuración git.-E
a susless
opciones para que se-F
pueda usar.--no-pager
un alias, debe prefijar el comando con él y, para evitar un error, debe crear un alias como este:git config alias.foo '!git --no-pager foo'
. Algo confuso. Simplemente aliasing'--no-pager foo'
no funcionará.Como se mencionó anteriormente, pasar la
-F
opción aless
hace que se cierre si el contenido es inferior a una pantalla. Sin embargo, después de hacerlo, la pantalla se reinicia y terminas sin ver el contenido.La
-X
opción elimina ese comportamiento. Por lo tanto, uso lo siguiente para habilitar la paginación condicional en función de la cantidad de contenido:fuente
git config --global --add core.pager "less -F -X"
en git1.8.0.2
, el anterior no funcionó.export LESS="-RFX"
a su.bashrc
o.zshrc
-X
hace. No lo uses si no te gusta eso. Me gusta porque de esta manera puedo referirme a cosas como SHA git mirando el resultado de comandos git anteriores en mi historial sin tener que volver a escribir el comando. Cada uno a lo suyo.Utilizar
para deshacerse de un buscapersonas para todos los comandos para todos los repositorios.
También puede deshabilitar la paginación para subcomandos Git individuales mediante el uso de la
pager.<cmd>
configuración en lugar decore.pager
, y puede cambiar su configuración por repositorio de Git (omitir--global
).Ver
man git-config
y buscarpager.<cmd>
detalles.fuente
Los cambios recientes en la documentación mencionan una forma diferente de eliminar una opción predeterminada para
less
(ser "opciones predeterminadas"FRSX
).Para esta pregunta, esto sería (git 1.8+)
Por ejemplo, Dirk Bester sugiere en los comentarios :
Wilson F menciona en los comentarios y en su pregunta que:
Esas modificaciones ya eran visibles en git 1.8.x, como se ilustra en " Usar siempre el localizador para
git diff
" (ver los comentarios). Pero la documentación se volvió a redactar ( para git 1.8.5 o 1.9, Q4 2013 ).Ver commit 97d01f2a para conocer el motivo detrás de la nueva redacción de documentación:
config: reescribir
core.pager
documentaciónNota: commit b327583 ( Matthieu Moy
moy
, abril de 2014, para git 2.0.x / 2.1, Q3 2014) eliminará la S por defecto:buscapersonas: elimina 'S' de $ LESS de forma predeterminada
La documentación leerá:
fuente
También puede deshabilitar / habilitar buscapersonas para salidas específicas en la configuración global:
O para configurar la opción core.pager, solo proporcione una cadena vacía:
Esto es mejor en mi opinión que configurarlo
cat
como usted dice.fuente
git version 2.5.4 (Apple Git-61)
git diff
al tiempo que deja de trabajar para otros comandoscode "$($env:UserProfile)\.gitconfig"
y agregar manualmentepager =
en la[core]
configuración. La respuesta funcionó para mi sesión actual de PowerShell, pero no parecía guardar la configuración en ningún lado, por lo que fue efectiva en el próximo lanzamiento.Con respecto al color deshabilitado al canalizar:
Use
--color
para evitar que el color esté deshabilitado.git diff --color | less -R
O configúrelo forzado (por ejemplo, en gitconfig):
git diff | less -R
Para herramientas que no sean de color, use:
git diff --no-color | some-primitive-tool
La exportación de la variable de entorno
LESS=-R
(por ejemplo, en .bashrc) activa el soporte de color de forma predeterminada en "menos":git diff | less
fuente
LESS
variable de entornoFRSX
cuando llame al localizador, si no está configurado.Esto funcionó para mí con Git versión 2.1.4 en Linux:
Esto hace que Git use en
cat
lugar deless
.cat
simplemente volca la salidadiff
a la pantalla sin paginación.fuente
Puede agregar un alias a diff con su propio localizador con pager.alias, así:
Esto mantendrá el color y usará 'cat' como localizador cuando se invoque en 'git dc'.
Además, cosas que no debes hacer:
--no-pager
en tu alias. Git (1.8.5.2, Apple Git-48) se quejará de que está intentando modificar el entorno.!sh
o!git
. Esto omitirá el error de entorno anterior, pero restablecerá su directorio de trabajo (a los efectos de este comando) al directorio Git de nivel superior, por lo que cualquier referencia a un archivo local no funcionará si ya está en un subdirectorio de tu repositoriofuente
git log
pero nogit log --oneline
. Usepager.log = less -FXR +/^commit.*
, mientras que la--oneline
opción de mayúsculas y minúsculas conalias.l1 = log --oneline
ypager.l1 = less -FXR
.Tengo este trozo en mi
.gitconfig
y parece funcionar bien (deshabilitado tanto para diff como para show):fuente
Me gusta deshabilitar la paginación de vez en cuando, cuando sé que la salida no es muy larga. Para esto, encontré un buen truco usando alias Git:
O agregue lo siguiente a la
[alias]
sección de ~ / .gitconfig:Esto significa que puede usar el prefijo
n
para desactivar la paginación para cualquier comando Git, es decir:fuente
Para un script rápido y sucio que escribí, lo hice de esta manera:
fuente
$GIT_PAGER
está configurado.git --no-pager
hace lo mismo pero de manera más confiable.Como dice en man git , puedes usar
--no-pager
en cualquier comando.Lo uso en:
Luego use un alias para evitar usar (y recordar) comandos largos.
fuente
Para Windows es:
Esto desactivará la paginación de todo
git
, incluido el súper molestogit branch
.fuente
Si usa oh-my-zsh, en el
~/.oh-my-zsh/lib/misc.zsh
archivo, comente esta línea:fuente
unset LESS
al final del .zshrc.Por defecto, git uses utiliza menos como buscapersonas. Normalmente prefiero más, ya que imprimirá la primera página y luego le permitirá desplazarse por el contenido.
Además, el contenido permanecerá en la consola cuando termine. Esto suele ser conveniente, ya que a menudo desea hacer algo con el contenido después de la búsqueda (por ejemplo, enviar un correo electrónico al encargado y decirle que introdujo un error en su última confirmación).
Si luego desea canalizar el contenido, sería inconveniente desplazarse para imprimir todo. Lo bueno con más es que podrá combinarlo con la tubería y lo canalizará a través de todo, por ejemplo.
Básicamente es todo lo que necesitaría, a menos que no desee que el contenido permanezca en la consola cuando termine. Para usar más en su lugar, haga lo siguiente.
fuente
O
--no-pager
.Por cierto: para preservar el color con el gato
fuente
Simplemente siga las instrucciones a continuación.
vi ~/.gitconfig
su terminal.LESS="-F -X $LESS"
Línea de pasta .:wq
y entra.fuente