2011-12-13 76 views
51

最近,我切换到SLES 11.我发现git命令有问题。所有的ANSI颜色都不能被渲染。相反,它显示了ANSI代码:git中的ANSI颜色显示不正确

* ESC [33米 *提交0a02124a0fd85c1f0094bcdf15bac1645e3c8630ESC [M

注:在 'LS' 的作品ANSI色非常好。

+0

这可能是http://stackoverflow.com/questions/6983305/how-to-fix-git-log-output-missing-lines-in-less的重复 - 假设你考虑到sehe的答案。 (我真的不知道为什么人们试图设置'LESS'来帮助Git - 它知道它需要什么。) – Cascabel

+0

我已经将LESS设置为使用其他设置。 – ben3000

回答

58

尝试设置你的LESS环境变量包括-R选项:

LESS=-R git grep ... 

如果一切正常,添加export LESS=-R~/.bashrc~/.profile或类似的shell启动文件。

-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 
+0

非常感谢! – Rocky

+4

你也应该可以使用core.pager配置参数。我不认为只有'-R'对于Git来说是理想的 - 它真的更喜欢FRSX--事实上,如果你还没有在你的环境中设置LESS,那么它就会被设置为。 – Cascabel

+1

@Jefromi:我建议补充说,作为答案,它很容易得到十分。 :) – sarnold

4

好的,我明白了。这个问题与变量LESS有关。

以下行解决这个问题:

export LESS="-erX" 
+2

您应该使用“-erX”的“-eRX”intead(每个sarnold的答案,如上所示)。如果你使用“-r”而不是更少,会直接通过其他控制字符(你可能不需要),并且更少不能正确地确定输出行的数量,所以一些滚动屏幕(你绝对不会想)。 “-e”和“-X”的使用与解释颜色转义序列无关。 “-e”会导致在第二次点击文件结尾时自动退出,“-X”“禁止发送termcap初始化和取消初始化字符串到终端。” – craigster0

25

的问题,正如其他人所指出的,是你的终端是好的,但是当Git的调用寻呼机,它不能正确解释ANSI颜色代码。

我开始了由你重置您的环境中LESS;这听起来像你以前可能已经将它设置为模糊Git所需的东西。如果解决了这个问题,那你就是。如果您确实需要自定义LESS,请注意,Git默认为FRSX,因此如果不需要,请谨慎更改。

如果无论出于何种原因要在你的环境,你要哪个GIT中不同LESS,理想的方式来处理Git和寻呼机是通过core.pager配置变量。引用手册页:

git将用于分页输出的命令。可以用GIT_PAGER环境变量覆盖。请注意,如果git在运行寻呼机时未设置,那么git会将LESS环境变量设置为FRSX。可以通过将LESS变量设置为其他值来更改这些设置。或者,可以通过设置core.pager选项在项目或全局基础上覆盖这些设置。设置core.pager对上面的LESS环境变量行为没有影响,所以如果你想以这种方式覆盖git的默认设置,你需要明确。例如,要以向后兼容的方式禁用S选项,请将core.pager设置为less -+$LESS -FRX。这将通过git传递给shell,这会将最终命令转换为LESS=FRSX less -+FRSX -FRX

结合一些你想要的选项的知识,应该让你到你想要的地方。 (花式向后兼容的方法通过禁用当前在LESS中的所有选项,然后添加你想要的。)

16

在Git中,你可以改变您的寻呼机使用-R选项:

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

我必须首先解除它,然后在引号中加上'less -R'。尽管如此。 – mtfurlan

5

对于我来说,这并不工作:

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

+0

你也可以尝试“--no-pager”开关。例如“git - 无图差异” –

0

我有类似的问题,在Laravel工匠和Symfony的游戏机在Git的ANSI颜色转义序列为Windows v2.7.1。这里提到的LESS解决方案没有解决问题。

由于混帐的Windows打开终端与bash --login -i,该行进入后终端开始做的工作对我来说:

bash 
1

我有同样的问题。但为什么我需要在一台机器上配置git,而不需要另一台?我想解决这个问题的来源,因为

混帐配置--global core.pager“少-R”

看起来像我的一个解决方法。