tag - El color ANSI en git no se muestra correctamente
¿para qué nos sirve el sha-1 cuando creamos tags? (7)
Recientemente, cambié a SLES 11. Encontré un problema para el comando git. Todo el color ANSI no se pudo representar. En cambio, muestra el código ANSI como este:
* ESC [33m * commit 0a02124a0fd85c1f0094bcdf15bac1645e3c8630ESC [m
nota: el color ansi en ''ls'' funciona muy bien.
El problema, como han notado otros, es que su terminal está bien, pero cuando Git invoca el buscapersonas, no está interpretando correctamente los códigos de color ANSI.
Comenzaría desconectando LESS
en su entorno; parece que podrías haberlo configurado anteriormente para ocultar algo que Git necesita. Si eso lo resuelve, allí estás. Si realmente debe personalizar LESS
, tenga en cuenta que Git comienza con FRSX
como predeterminado, así que tenga cuidado de cambiarlos si no es necesario.
Si lo hace por cualquier razón, quiere LESS
en su entorno diferente de lo que quiere para Git, la forma ideal de tratar con Git y el localizador es a través de la variable de configuración core.pager
. Para citar la página de manual:
El comando que usará git para paginar la salida. Se puede anular con la variable de entorno GIT_PAGER. Tenga en cuenta que git establece la variable de entorno LESS en FRSX si no está configurada cuando ejecuta el busca. Uno puede cambiar estas configuraciones estableciendo la variable LESS en algún otro valor. Alternativamente, estas configuraciones pueden ser anuladas en un proyecto o global al configurar la opción core.pager. Configurar core.pager no afecta el comportamiento de la variable de entorno LESS anterior, por lo que si desea anular la configuración predeterminada de git de esta manera, debe ser explícito. Por ejemplo, para deshabilitar la opción S de forma retrocompatible, configure core.pager en
less -+$LESS -FRX
. Esto será pasado al shell por git, que traducirá el comando final aLESS=FRSX less -+FRSX -FRX
.
Eso, combinado con cierto conocimiento de las opciones que desea, debe llevarlo a donde desea estar. (El sofisticado método compatible con versiones anteriores funciona desactivando todas las opciones actualmente en LESS
, y luego volviendo a agregar las que desee).
En git, puedes cambiar tu busca para usar la opción -R
:
git config --global core.pager "less -R"
Intente configurar su variable de entorno LESS
para incluir la opción -R
:
LESS=-R git grep ...
Si esto funciona, agregue export LESS=-R
a su ~/.bashrc
o ~/.profile
o archivo de inicio de shell similar.
-R or --RAW-CONTROL-CHARS
Like -r, but only ANSI "color" escape sequences are
output in "raw" form. Unlike -r, the screen
appearance is maintained correctly in most cases.
ANSI "color" escape sequences are sequences of the
form:
ESC [ ... m
where the "..." is zero or more color specification
characters
OK, lo tengo. Este problema tiene que ver con la variable MENOS.
La siguiente línea resuelve este problema:
export LESS="-erX"
Para mí, esto no funcionó:
git config --global core.pager less -R
Así que en su lugar adjunté lo siguiente a mi archivo ~ / .gitconfig
[core]
pager = less -R
Para probarlo lo hice
git log --graph --pretty=format:"%C(yellow)%h%Creset%C(blue)%d%Creset %C(white bold)%s%Creset %C(white dim)(by %an %ar)%Creset" --all
Tuve un problema similar con las secuencias de escape de color de ANSI en Git para Windows v2.7.1 en las consolas Laravel Artisan y Symfony. Aquí mencioné que la solución LESS
no resolvió el problema.
Dado que Git para Windows abre la terminal con bash --login -i
, esta línea ingresada después de que la terminal se inició funcionó para mí:
bash
Yo tuve el mismo problema. Pero ¿por qué tengo que configurar un git en una máquina y no es necesario en otra? Quiero arreglar el origen del problema porque
git config --global core.pager "menos -R"
parece una solución para mí.