git diffが間違った色を表示する

git diffが間違った色を表示する

すべてのgitコマンドからカラー出力を取得するには、次のように設定しました。

git config --global color.ui true

ただし、これにより次の出力が生成されますgit diffgit log

子比較スクリーンショット

そしてshowのようなコマンドがgit status良いでしょう

子ステータススクリーンショット

特定のコマンドでエスケープされたカラーコードだけが認識されない理由と回避策は何ですか?

私はxterm-256colorOS X 10.8.2でiTerm 2(ターミナルタイプ)を使用しており、シェルではzshを使用しています。

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

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

ベストアンサー1

エスケープシーケンスは端末に表示色を変更するように指示し、エスケープ文字はとして表示され、ESC望ましい動作はエスケープシーケンスが意図した効果を持つことがわかります。

そしてパイプのようなgit diffコマンドはgit log出力を携帯用小型無線ポケットベルless基本的に。 Gitは制御文字に制御効果を発揮するように指示しようとしますlessが、機能しません。

lessそれがあなたのポケットベルですが、LESS環境変数を-rorを含まない値に設定した場合、gitは色を表示するように言うことは-Rできません。less通常は通過しますLESS=-FRSXが、LESS環境に設定されている場合は通過しません。回避策は、呼び出し時に色を表示するようにgitに指示する-Rオプションを明示的に渡すことです。less

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

lessポケットベルでない場合は、ポケットベルに切り替えるか、lessポケットベル表示色を作成する方法を学びます。

ポケットベルを呼び出すときにGitが色を表示しないようにするには、代わりcolor.uiに設定します。autotrue

おすすめ記事