すべてのgitコマンドから色付きの出力を取得するために、次のように設定します。
git config --global color.ui true
ただし、これにより、このようなgit diff
、git log
の出力が生成されます。
git status
などのコマンドは正常に表示されます
一部のコマンドだけでエスケープされたカラーコードが認識されないのはなぜですか?どのように修正できますか?
シェルとしてOS X 10.8.2およびzshでiTerm 2(ターミナルタイプxterm-256color
)を使用しています
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 diff
やgit log
などのコマンドは、デフォルトで pager 、 less
に出力をパイプします。 Gitはless
に制御文字に制御効果を持たせるように指示しようとしますが、これは機能しません。
less
がポケットベルであるが、環境変数LESS
が-r
または-R
を含まない値に設定されている場合、gitはless
は色を表示します。通常、LESS=-FRSX
を渡しますが、LESS
が環境にすでに設定されている場合は渡しません。修正は、-R
オプションを明示的に渡して、gitによって呼び出されたときにless
に色を表示するように指示することです。
git config --global core.pager 'less -R'
less
がポケットベルではない場合は、less
に切り替えるか、ポケットベルで色を表示する方法を理解してください。
ポケットベルを呼び出すときにgitに色を表示させたくない場合は、auto
ではなくcolor.ui
をtrue
に設定します。
Gillesの改善 answer 、古い$LESS
オプションをgit構成で使用する(例:~/.gitconfig
):
[core]
pager = less -+$LESS -FRX
Busybox がある場合にも、この出力が表示されます。 Alpine Linux は、それを使用する人気の高いディストリビューションの良い例です。 https://wiki.alpinelinux.org/wiki/Alpine_Linux:FAQ#How_to_enable.2Ffix_colors_for_git.3F を参照してください
現在Busyboxを使用しているかどうかを確認する簡単な方法は、次のコマンドを実行することです。
realpath `which less`
または fish Shell を使用する場合
realpath (which less)
出力が/bin/busybox
、次に gnu less をインストールすることで問題を解決できます。
アルパイン:
Sudo apk --update add less
コマンドは、ディストリビューション/パッケージマネージャーによって異なります。