git(または任意のコマンド)の出力に色を付ける方法はありますか?

考慮事項:

 baller@Laptop:~/rails/spunky-monkey$ git status # On branch new-message-types # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: app/models/message_type.rb # no changes added to commit (use "git add" and/or "git commit -a") baller@Laptop:~/rails/spunky-monkey$ git add app/models  

そして

 baller@Laptop:~/rails/spunky-monkey$ git status # On branch new-message-types # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: app/models/message_type.rb #  

出力は同じように見えますが、情報はまったく異なります。ファイルはステージングされていない状態からステージングされてコミットされています。

方法はありますか出力を色付けするには?たとえば、ステージングされていないファイルは赤、ステージングされているファイルは緑ですか?

または、Changes not staged for commit:を赤に、# Changes to be committed:を緑に変更しますか?

Ubuntuで作業しています。

編集:グーグルはこの答えがうまく機能することを発見しました:git config --global --add color.ui true

ただし、色を追加するためのより一般的な解決策はありますかコマンド出力?

コメント

  • すべてのコマンド出力を色付けするものが必要ですか?どの部分に色を付けるかをどのように知るのでしょうか?
  • 正規表現を使用して構成する方法があるかどうかを推測します。各色には、開始正規表現を含めることができます。また、すべての色をオフにするデフォルトの色正規表現が存在する可能性があります。また、テキスト" foo "が表示された場合は、特定の色で表示します…

回答

~/.gitconfigにセクション[color]を作成できます。 div> with eg次のコンテンツ

[color] diff = auto status = auto branch = auto interactive = auto ui = true pager = true 

また、どのように色を付けたいかを微調整することもできます。例:

[color "status"] added = green changed = red bold untracked = magenta bold [color "branch"] remote = yellow 

これで始められるといいのですが。そしてもちろん、色をサポートする端末が必要です。

コメント

  • git config –globalcolor.uiを配置する価値があると思います自動(@Evgeny 'の回答)があなたの一番上にあります… 'はほとんどの人がそうだと思います探している。私は'両方に賛成しました…私は'ただ言っています、ここに来るインターネットのために、私は多くの人は、そのシンプルなワンライナーを望んでいます。
  • これは私にとって完璧に機能しました-[color "status"]セクションに。
  • プロジェクトに[color]セクションを追加できます'の.git / configファイルも
  • そしてあなたはgitコマンドの1回の呼び出しに対して構成変数を設定できます: stackoverflow.com/a/18304605/134044

回答

おそらく使用したい

git config --global color.ui auto 

autoの部分では、gitはそれをサポートする端末でのみ色を使用しようとし、たとえばgitコマンドの出力をファイルにリダイレクトした場合はANSIシーケンスを取得しないと述べています。 trueに設定することはautoと同じであり、これはGit1.8.4以降のデフォルトでもあります。

color.uiは、gitコマンドで使用できるさまざまなcolor.*構成をすべて含むメタ構成です。

これについて説明します。 git help configの詳細。

コメント

  • color.uiの違いを説明してくださいtrueautoが指す)とalwaysドキュメントを読みましたが、それでも違いがわかりません。
  • @chharvey color.ui = auto + git diff | less-色なし、color.ui = always + git diff | less-色付きの出力。 LESS=-Rが暗示されます。

回答

git config --global color.ui auto git config --global color.branch auto git config --global color.status auto 

コメント

  • FYI、これはgitバージョン1.5.2.1でのみ機能し、他の回答は機能しませんでした' t。

回答

受け入れられた回答が最も一般的な解決策になります。何らかの理由で構成を永続的に変更する必要がない場合は、そのソリューションで行うように、単一のgitコマンドの構成をオーバーライドできます。

git -c color.ui=always <usual git command and options> 

たとえば、 :

git -c color.ui=always status git -c color.ui=always diff 

テスト済み:git 2.4.6でサポートされていますが、git1.7.1ではサポートされていません

コメント

  • lessにパイプするときに色を取得しようとしている他の人は、

カラーエスケープ文字をless -R経由で端末に渡します。

  • この機能はいつ追加されましたか?
  • 回答

    git config --global color.ui always git config --global color.branch always git config --global color.diff always git config --global color.interactive always git config --global color.status always git config --global color.grep always git config --global color.pager true git config --global color.decorate always git config --global color.showbranch always 

    回答

    または、次の方法ですべて/ほとんどの色付けをオフにします:

    git config --global color.ui false git config --global color.branch false git config --global color.diff false git config --global color.interactive false git config --global color.status false git config --global color.grep false git config --global color.pager false git config --global color.decorate false git config --global color.showbranch false 

    コメント

    • OP wasn ' on の色ではなく、 off の色をオンにしようとはしていません。 OPで、彼はgitに参加する方法を述べ、よりグローバルな意味でそれを行う方法を望んでいます。そのような方法を知っている場合は、回答を編集して説明してください。
    • 密接に関連しているが少し異なるものを探している人もいますが、反対票を投じてくれてありがとう。
    • 気に入ったit @theRiley

    回答

    色付きのgit diffパイプの場合lessに、これは機能します:

    git -c color.diff=always diff [...] | less -R 

    回答

    これは、任意のコマンド出力カラーを使用して実行できます。ほとんどは機能しますが、入力を期待するプロンプトが表示されず、必要な既知の入力を入力してEnterキーを押すだけで続行できないというバグを回避する方法がわかりません。

    git~/.acoc.confの例:

    # git [git/ae] /.*(error:.*)/ red+bold /.*(warning:.*)/ yellow /.*(hint:.*)/ magenta /.*(up-to-date).*/ green+bold /.*(nothing to commit).*/ green /^(\+.*)/ green /^(-.*)/ red 

    。 。これは、.bash_profilealias git="acoc git"とうまく連携します。

    コメント

    • acocの設定を共有できますか?
    • Nvm、簡単に記述できました。:)回答に追加されました。

    回答

    投稿が4年前であることは知っていますが、私のキャンプから誰も応答していません。色覚異常です。できれば色を区別し、私の投稿を無視します。

    「gitstatus」は、たとえば、背景が白/白が黒(判読可能)、削除が濃い灰色(黒の背景では判読できないが、に対して判読可能)のテキストを出力します。白い背景)とミディアムグレーdded(大麦は黒の背景で判読可能、白の背景では判読不能)。以前は、ターミナルウィンドウの背景を白/黒に切り替えて、判読できないテキストを読み取れるようにしました。簡単な解決策は次のとおりです。

     git status | more 

    これにより、標準の白または黒の背景端末ウィンドウですべてのテキストが読みやすくなります。

    コメント

    • 設定を変更して、デフォルトですべてを無色に設定することもできます(color.ui = never)。

    回答

    git diffの出力を色付けするには、color.diffセクションをに追加します。 〜/ .gitconfig。例:

    [color "diff"] new = bold italic 154 old = bold italic 196 

    ここで154196はANSIです256色のコード。詳細については、man git configを参照してください。

    回答

    https://github.com/dandavison/delta の色付き言語構文-(git)diff出力の強調表示、およびdiff内の追加/削除された行の色付き強調表示。