2011-12-13 34 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」

看起來像我的一個解決方法。