git diffは色を正しく表示しません


46

すべてのgitコマンドから色付きの出力を取得するには、次を設定します。

git config --global color.ui true

ただし、これによりgit diffgit log

git diffスクリーンショット

一方、git status表示のようなコマンドは正常に表示されます

git statusスクリーンショット

一部のコマンドでのみエスケープされたカラーコードが認識されないのはなぜですか?どうすれば修正できますか?

xterm-256colorOS 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)

回答:


65

エスケープシーケンスは、端末に表示される色を変更するように指示するエスケープシーケンスが表示されESCています。

git diffおよびなどのコマンドは、デフォルトでgit log出力をページャーにパイプlessします。Gitはless、制御文字に制御効果を持たせるように指示しようとしますが、これは機能しません。

場合はless、あなたのページャですが、あなたは、環境変数を持ってLESS含まれていない値に設定する-rかを-R、gitのは、言うことができないless表示色に。通常はを通過しますがLESS=-FRSXLESS環境に既に設定されている場合は通過しません。修正方法は、gitによって呼び出されたときに色を表示-Rするように指示lessするオプションを明示的に渡すことです。

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

lessがページャーでない場合は、ページャーに切り替えるかless、ページャーに色を表示する方法を見つけてください。

ポケットベルを呼び出しているときにgitに色を表示させたくない場合は、の代わりにに設定color.uiautoますtrue


ああ、ありがとう。色を表示するless必要-Rがあることは知っていましたが、それを忘れてgit loggit diff出力をにパイプしましたless。ありがとう:)

5
ありがとうございました!~/.profileFreeBSD のデフォルトが持っていることに気づかなかったPAGER=more; export PAGER
Jeffrey Goldberg 14

ありがとう。私はすべてにできるのが好きだからにLESS着手しまし-KCTRL-C。私はそれがその変数でファンキーなものだと思っていましたが、今ではそれを修正する方法を知っています。
トリシス

2

Gillesの答えを改善する$LESSと、git configでこれを使用することで古いオプションを保持できます(例:)~/.gitconfig

[core]
pager = less -+$LESS -FRX

quazgarの答えは良いです。私はLESS=-ibashrc を持っているので、 `[core] pager = less $ LESS -FR`を実行しなければなりません。Xを使用すると、既存の端末コンテンツが消去されるため、端末コンテンツを保持することを好みます。
ウェインウォーカー

1

Busyboxがある場合は、この出力も表示できます。Alpine Linuxは、それを使用する人気のあるディストリビューションの良い例です。https://wiki.alpinelinux.org/wiki/Alpine_Linux:FAQ#How_to_enable.2Ffix_colors_for_git.3Fを参照してください

現在Busyboxを使用しているかどうかを知る簡単な方法は、次を実行することです。

realpath `which less`

または、魚の殻を使用する場合

realpath (which less)

出力がの場合、gnu lessを/bin/busyboxインストールすることで問題を解決できます。

アルパインの場合:

sudo apk --update add less

このコマンドは、ディストリビューション/パッケージマネージャーによって異なります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.