tutorial gui español descargar commands comandos git

gui - git repository



¿Cómo evito que git diff use un buscapersonas? (11)

¿Hay un interruptor de línea de comandos para pasar a git diff y otros comandos que usan less buscapersonas de forma predeterminada?

Sé que puedo canalizarlo a cat, pero eso elimina todo el resaltado de sintaxis.

Sé que puedo configurar el buscapersonas en el .gitconfig global a cat por GITPAGER=cat (o algo así); pero quiero tener buscapersonas a veces (dependiendo del tamaño de la diferencia).

Pero, preferiría un interruptor de línea de comando si hay uno; y no soy capaz de encontrar una, pasando por las páginas del manual.


Como se indica en man git , puede usar --no-pager en cualquier comando.

Lo uso en:

git --no-pager diff git --no-pager log --oneline --graph --decorate --all -n 10

Luego use un alias para evitar usar (y recordar) comandos largos.


Como se mencionó en la respuesta anterior, pasar la opción -F a menos hace que se cierre si el contenido es menos de una pantalla, sin embargo, después de hacerlo, la pantalla se reinicia y al final no se ve el contenido, la opción -X elimina ese comportamiento Por lo tanto, uso lo siguiente para habilitar la paginación condicional según la cantidad de contenido:

git config --global --replace-all core.pager "less -F -X"


Esto me funcionó con la versión 2.1.4 de git en Linux:

git config --global --replace-all core.pager cat

Esto hace que git use cat lugar de less . cat simplemente descarga la salida de diff a la pantalla sin ningún aviso.


Los cambios recientes en la documentación mencionan una forma diferente de eliminar una opción predeterminada por less (las "opciones predeterminadas" son FRSX ).

Para esta pregunta, esto sería (git 1.8+)

git config --global --replace-all core.pager ''less -+F -+X''

Por ejemplo, Dirk Bester sugiere en los comentarios :

export LESS="$LESS -FRXK"

de modo que obtengo diferencias de color con Ctrl-C salga de less .

Wilson F menciona en los comentarios y en su pregunta que:

less admite el desplazamiento horizontal, de modo que cuando se cortan las líneas, se deshabilita la función de "quit-if-one-screen" para que el usuario aún pueda desplazar el texto hacia la izquierda para ver qué se cortó.

Esas modificaciones ya estaban visibles en git 1.8.x, como se ilustra en " Usar siempre el buscapersonas para git diff " (ver los comentarios). Pero la documentación acaba de volver a redactarse ( para git 1.8.5 o 1.9, Q4 2013 ).

Visor de texto para uso de comandos de Git (por ejemplo, ''menos'').
El valor está destinado a ser interpretado por el shell.

El orden de preferencia es:

  • la variable de entorno $GIT_PAGER ,
  • entonces la configuración de core.pager ,
  • entonces $PAGER ,
  • y luego el valor predeterminado elegido en el momento de la compilación (generalmente ''menos'').

Cuando la variable de entorno LESS está establecida, Git la configura en FRSX
(Si la variable de entorno LESS está establecida, Git no la cambia en absoluto).

Si desea anular de forma selectiva la configuración predeterminada de Git para LESS , puede configurar core.pager para, por ejemplo, less -+S
Git pasará esto al shell, que traducirá el comando final a LESS=FRSX less -+S El entorno le dice al comando que establezca la opción S para cortar líneas largas, pero la línea de comandos lo restablece al valor predeterminado para plegar líneas largas.

Consulte commit 97d01f2a para conocer la razón detrás de la nueva redacción de la documentación:

config: rewrite core.pager documentación

El texto menciona core.pager y GIT_PAGER sin dar la imagen general de prioridad. Solicite una mejor descripción de la documentación de git var (1) .

El uso del mecanismo para permitir archivos de configuración globales, por sistema y por repositorio, no se limita a esta variable en particular. Retíralo para aclarar el párrafo.

Reescriba la parte que explica cómo la variable de entorno LESS se establece en el valor predeterminado de Git y cómo personalizarla de forma selectiva.

Nota: commit b327583 ( Matthieu Moy moy , abril de 2014, para git 2.0.x / 2.1, Q3 2014) eliminará la S de forma predeterminada:

paginador: eliminar ''S'' de $ LESS por defecto

De forma predeterminada, Git solía establecer $LESS en -FRSX si el usuario no establecía $LESS .
Los indicadores FRX realidad tienen sentido para Git ( F y X porque a veces la salida de Git a menos es corta, y R porque Git canaliza la salida de color).
La bandera S (cortar líneas largas), por otro lado, no está relacionada con Git y es una cuestión de preferencia del usuario. Git no debe decidir que el usuario cambie el valor predeterminado de LESS .

Más específicamente, la bandera S daña a los usuarios que revisan código no confiable dentro de un paginador, ya que un parche que se parece a:

-old code; +new good code; [... lots of tabs ...] malicious code;

parecería idéntico a:

-old code; +new good code;

Los usuarios que prefieren el comportamiento anterior todavía pueden establecer la variable de entorno $ LESS en -FRSX explícitamente, o configurar core.pager en '' less -S ''.

La documentación se leerá:

El entorno no establece la opción S , pero sí lo hace la línea de comandos, lo que indica que hay que truncar líneas largas.
De manera similar, establecer core.pager en less -+F desactivará la opción F especificada por el entorno desde la línea de comandos, desactivando el comportamiento de " quit if one screen " de less .
Uno puede activar específicamente algunos indicadores para comandos particulares: por ejemplo, establecer pager.blame en less -S habilita el truncamiento de línea solo por git blame .


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 de git:

git config --global --add alias.n ''!git --no-pager''

O agregue lo siguiente a la sección [alias] de ~ / .gitconfig:

n = !git --no-pager

Esto significa que puede usar el prefijo n para desactivar la paginación de cualquier comando git, es decir:

git n diff # Show the diff without pager git n log -n 3 # Show the last 3 commits without pager git n show v1.1 # Show information about a tag


Para un guión rápido y sucio que escribí, lo hice de esta manera:

PAGER=cat git diff ...


Puede agregar un alias a diff con su propio paginador con pager.alias, de esta manera:

[alias] dc = diff dsc = diff --staged [pager] dc = cat dsc = cat

Esto mantendrá el color encendido y usará ''cat'' como el buscapersonas cuando se invoque en ''git dc''.

Además, cosas que no debes hacer:

  • usa --no-pager en tu alias. Git (1.8.5.2, Apple Git-48) se quejará de que está intentando modificar el entorno.
  • Utilice una concha con! sh o! git. Esto evitará el error de entorno, más arriba, pero restablecerá su directorio de trabajo (para los propósitos de este comando) al directorio git de nivel superior, por lo que cualquier referencia a un archivo local no funcionará si ya se encuentra en un subdirectorio de su repo

Respecto al color deshabilitado en la tubería:

Utilice --color para evitar que se deshabilite la coloración.

git diff --color | less -R

O configúrelo forzado en (por ejemplo, .gitconfig):

[color] ui = on

git diff | less -R

Para herramientas que no sean de color, entonces use:

git diff --no-color | some-primitive-tool

La variable de entorno de exportación LESS=-R (por ejemplo, .bashrc) activa el soporte de color por defecto en "menos":

git diff | less


También puede deshabilitar / habilitar paginadores para salidas específicas en la configuración global:

git config --global pager.diff false

O para establecer la opción core.pager, simplemente proporcione una cadena vacía:

git config --global core.pager ''''

En mi opinión, esto es mejor que configurarlo como cat como dices.


Utilizar

git config --global core.pager cat

para deshacerse de pager para todos los comandos para todos los repositorios.

También puede deshabilitar la paginación para subcomandos de git individuales usando la configuración de pager.<cmd> en lugar de core.pager y puede cambiar su configuración por repositorio de git ( --global ).

Consulte man git-config y busque pager.<cmd> para más detalles.


--no-pager to git le dirá que no use un pager. Pasando la opción -F a less le dirá que no pagine si la salida se ajusta a una sola pantalla.

Uso:

git --no-pager diff

Otras opciones de los comentarios incluyen:

# set an evaporating environment variable to use cat for your pager GIT_PAGER=cat git diff # tell less not to paginate if less than a page export LESS="-F -X $LESS" # ...then git as usual git diff