El color ANSI en git no se muestra correctamente

Recientemente, cambié a SLES 11. Encontré un problema para el command 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.

Intente configurar su variable de entorno LESS para include la opción -R :

 LESS=-R git grep ... 

Si esto funciona, agregue export LESS=-R a su ~/.bashrc o ~/.profile o file 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 

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 count que Git comienza con FRSX por defecto, 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 configuration core.pager . Para citar la página de manual:

El command que usará git para paginar la salida. Se puede anular con la variable de entorno GIT_PAGER. Tenga en count 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. La configuration de core.pager no afecta al comportamiento de la variable de entorno LESS anterior, por lo que si desea anular la configuration pnetworkingeterminada 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 command final a LESS=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" 

Para mí, esto no funcionó:

git config --global core.pager less -R

Así que en su lugar adjunté lo siguiente a mi file ~ / .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

OK, lo tengo. Este problema tiene que ver con la variable MENOS.

La siguiente línea resuelve este problema:

 export LESS="-erX" 

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 "less -R"

parece una solución para mí.

Tuve un problema similar con las secuencias de escape de color de ANSI en Git para Windows v2.7.1 en las consoles 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