Подтвердить что ты не робот

Цвет ANSI в git отображается неправильно

Недавно я переключился на SLES 11. Я нашел проблему для команды git. Весь цвет ANSI не может быть отображен. Вместо этого он показывает код ANSI следующим образом:

* ESC [33m * commit 0a02124a0fd85c1f0094bcdf15bac1645e3c8630ESC [m

Примечание: цвет ansi в 'ls' работает очень хорошо.

4b9b3361

Ответ 1

Попробуйте установить переменную среды LESS, чтобы включить параметр -R:

LESS=-R git grep ...

Если это работает, добавьте export LESS=-R в ваш ~/.bashrc или ~/.profile или аналогичный файл запуска оболочки.

   -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

Ответ 2

Проблема, как отмечали другие, заключается в том, что ваш терминал в порядке, но когда Git вызывает пейджер, он не правильно интерпретирует цветовые коды ANSI.

Я бы начал, отключив LESS в вашей среде; это похоже на то, что вы, возможно, ранее устанавливали его для чего-то, скрывающего то, что нужно Git. Если это решает, вот и все. Если вы действительно должны настроить LESS, обратите внимание, что Git начинается с FRSX по умолчанию, поэтому будьте осторожны при изменении, если вам это не нужно.

Если вы по какой-либо причине хотите LESS в вашей среде отличаться от того, что хотите для Git, то идеальным способом работы с Git и пейджером является переменная конфигурации core.pager. Чтобы процитировать manpage:

Команда, которую Git будет использовать для вывода постраничного изображения. Может быть переопределено переменной окружения GIT_PAGER. Обратите внимание, что Git устанавливает переменную среды LESS в FRSX, если она не установлена ​​при запуске пейджера. Можно изменить эти настройки, установив для переменной LESS значение другого значения. В качестве альтернативы эти параметры можно переопределить на основе проекта или на глобальном уровне, установив параметр core.pager. Настройка core.pager не влияет на поведение переменной среды LESS выше, поэтому, если вы хотите переопределить параметры по умолчанию w27, вы должны быть явными. Например, чтобы отключить параметр S в обратном соответствии, установите для core.pager значение less -+$LESS -FRX. Это будет передано в оболочку с помощью Git, который преобразует окончательную команду в LESS=FRSX less -+FRSX -FRX.

Это, в сочетании с некоторыми знаниями о необходимых вам параметрах, должно получить вас там, где вы хотите быть. (Способность обратной совместимости работает, отключая все параметры в настоящее время в LESS, а затем добавляя обратно те, которые вы хотите.)

Ответ 3

В git вы можете изменить свой пейджер, чтобы использовать параметр -R:

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

Ответ 4

Для меня это не сработало:

git config --global core.pager less -R

Итак, вместо этого я добавил следующее в файл ~/.gitconfig

 [core]
     pager = less -R

Чтобы проверить это, я сделал

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

Ответ 5

Хорошо, я понял. Эта проблема связана с переменной LESS.

следующая строка решает эту проблему:

export LESS="-erX"

Ответ 6

У меня была та же проблема. Но почему мне нужно настроить git на одном компьютере и не нуждаться в другом? Я хочу исправить источник проблемы, потому что

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

выглядит как обходной путь для меня.

Ответ 7

У меня была аналогичная проблема с последовательностями escape-последовательности ANSI в Git для Windows v2.7.1 в консолях Laravel Artisan и Symfony. Здесь упомянутое решение LESS не решило проблему.

Так как Git для Windows открывает терминал с bash --login -i, эта строка, введенная после запуска терминала, работала для меня:

bash

Ответ 8

Кто бы здесь ни оказался, в моем случае это было решено установкой в core.pager пустой строки вместо ее сброса:

git config --global core.pager ''

Это было от https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration