ANSI color in git is not displayed correctly

GitBash

Git Problem Overview


Recently, I switched to SLES 11. I found a problem for git command. All the ANSI color could not be rendered. Instead, it shows the ANSI code like this:

ESC[33mcommit 0a02124a0fd85c1f0094bcdf15bac1645e3c8630ESC[m

note: the ansi color in 'ls' works very well.

Git Solutions


Solution 1 - Git

Try setting your LESS environment variable to include the -R option:

LESS=-R git grep ...

If this works, add export LESS=-R to your ~/.bashrc or ~/.profile or similar shell startup file.

   -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

Solution 2 - Git

The problem, as others have noted, is that your terminal is fine, but when Git invokes the pager, it's not interpreting the ANSI color codes correctly.

I'd start out by unsetting LESS in your environment; it sounds like you might have previously been setting it to something obscuring what Git needs. If that solves it, there you are. If you really must customize LESS, note that Git starts out with FRSX as default, so be wary of changing those if you don't need to.

If you do for whatever reason want LESS in your environment different from what you want for Git, the ideal way to deal with Git and the pager is through the core.pager config variable. To quote the manpage:

> The command that git will use to paginate output. Can be overridden with the GIT_PAGER environment variable. Note that git sets the LESS environment variable to FRSX if it is unset when it runs the pager. One can change these settings by setting the LESS variable to some other value. Alternately, these settings can be overridden on a project or global basis by setting the core.pager option. Setting core.pager has no affect on the LESS environment variable behaviour above, so if you want to override git’s default settings this way, you need to be explicit. For example, to disable the S option in a backward compatible manner, set core.pager to less -+$LESS -FRX. This will be passed to the shell by git, which will translate the final command to LESS=FRSX less -+FRSX -FRX.

That, combined with some knowledge of the options you want, should get you where you want to be. (The fancy backward-compatible method works by disabling all options currently in LESS, then adding back in the ones you want.)

Solution 3 - Git

In git, you can change your pager to use the -R option:

git config --global core.pager "less -R"

Solution 4 - Git

For me, this did not work:

git config --global core.pager less -R

So instead i appended the following to my ~/.gitconfig file

 [core]
     pager = less -R

To test it i did

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

Solution 5 - Git

OK, I got it. This problem is to do with the variable LESS.

following line resolve this problem:

export LESS="-erX"

Solution 6 - Git

I had the same problem. But why I need to configure a git in one machine and no need on another? I want to fix the source of the problem because

> git config --global core.pager "less -R"

looks like a workaround for me.

Solution 7 - Git

I had similar problem with ANSI color escape sequences in Git for Windows v2.7.1 in Laravel Artisan and Symfony consoles. Here mentioned LESS solution didn't solve the problem.

Since Git for Windows opens terminal with bash --login -i, this line entered after terminal started did work for me:

bash

Solution 8 - Git

Whoever ever winds up here, in my case it was solved by setting core.pager to an empty string, instead of unsetting it:

git config --global core.pager ''

This was from https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRockyView Question on Stackoverflow
Solution 1 - GitsarnoldView Answer on Stackoverflow
Solution 2 - GitCascabelView Answer on Stackoverflow
Solution 3 - GitdhavaldView Answer on Stackoverflow
Solution 4 - Gitrobster_guyView Answer on Stackoverflow
Solution 5 - GitRockyView Answer on Stackoverflow
Solution 6 - GitPavel PrischepaView Answer on Stackoverflow
Solution 7 - GitMilanView Answer on Stackoverflow
Solution 8 - GitBadgerView Answer on Stackoverflow