Osx

git diff 顯示顏色不正確

  • August 4, 2017

為了從所有 git 命令中獲得彩色輸出,我設置了以下內容:

git config --global color.ui true

但是,這會產生這樣的輸出git diffgit log

git diff 截圖

而像git status顯示正常的命令

git狀態截圖

為什麼僅在某些命令中無法辨識轉義的顏色程式碼,我該如何解決?

xterm-256color在 OS X 10.8.2 和 zsh 上使用 iTerm 2(終端類型)作為我的外殼

zsh --version
zsh 5.0.0 (x86_64-apple-darwin12.0.0)

git --version                                                                                                                      
git version 1.7.9.6 (Apple Git-31.1)

您會看到轉義序列告訴終端更改顯示為轉義字元的顏色ESC,而所需的行為是轉義序列具有預期的效果。

預設情況下,諸如git diffand之類的命令將git log其輸出傳送到pagerless。Git 試圖告訴less允許控製字元具有控制效果,但這對你不起作用。

如果less是您的尋呼機,但您將環境變數LESS設置為不包含-ror的值,則-Rgit 無法判斷less顯示顏色。它通常會通過LESS=-FRSX,但如果LESS已經在環境中設置,則不會。一個修復方法是在 git 呼叫時顯式傳遞-R選項來告訴顯示顏色:less

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

如果less不是您的尋呼機,請切換到less或弄清楚如何使您的尋呼機顯示顏色。

如果您不希望 git 在呼叫尋呼機時顯示顏色,請設置color.uiauto而不是true.

引用自:https://unix.stackexchange.com/questions/64927