gitの出力を色付けする方法は?


256

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

ただし、コマンド出力に色を追加するためのより一般的なソリューションはありますか?


1
すべてのコマンド出力を色付けするものが必要ですか?どの部分に色を付けるのかをどうやって知るのでしょうか?
マイケルMrozek

正規表現を使用して設定する方法があった場合、各色に開始正規表現を設定できます。そして、すべての色をオフにするデフォルトの色正規表現があるかもしれません。また、テキスト「foo」が表示される場合は、特定の色で表示します
B

回答:


268

あなたはセクションを作成することができ[color]、あなたの中で~/.gitconfig例えば以下の内容で

[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

これで開始できることを願っています。そしてもちろん、色をサポートする端末が必要です。


14
git config --global color.ui auto(@ Evgeny's answer)をあなたのトップに置く価値があると思います...ほとんどの人が探しているものだと思います。私は両方を支持しました...私はここに来るインターネットのために、私は多くの人がただそのシンプルなライナーを望んでいると思うだけです。彼らがそれを手に入れればさらに良いことに加えて、あなたの余分な良さ。
msouth

これは私にとって完璧に機能しました- [color "status"]私が追加したセクションでbranch = yellow
ウェインワーナー

3
[color]セクションをプロジェクトの.git / configファイルに追加することもできます
-andrej

そして、gitコマンドの1回の呼び出しに対して構成変数を設定するだけです:stackoverflow.com/a/18304605/134044
NeilG

220

おそらく使いたい

git config --global color.ui auto

auto一部はgitのが唯一試してみて、それをサポートする端末上で色を使用しますと言うと、あなたは例えば、ファイルにはgitコマンドの出力をリダイレクトする場合はANSIシーケンスを取得することはありません。に設定することtrueはと同じautoであり、これはGit 1.8.4以降のデフォルトでもあります。

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

これはで詳細に説明されていgit help configます。


color.ui true(をauto指す)とalways?の違いを説明できますか?私はドキュメントを読みましが、それでも違いはわかりません。
15:03のchharvey

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

参考までに、これだけがgitバージョン1.5.2.1で機能し、他の回答では機能しませんでした。
-AbhiNickz

14

受け入れられた答えは、最も一般的なソリューションを提供します。何らかの理由で構成を永続的に変更する必要がない場合(そのソリューションはそうします)、単一の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でサポートされていますが、git 1.7.1 ではサポートされていません


2
less私のようにパイピングするときに色を取得しようとする他の人は、をless介して色エスケープ文字を端末に渡すことができますless -R
-xdhmoore

この機能はいつ追加されましたか?
オンドラジー

11
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

1

任意のコマンド出力色でこれを行うことができます。ほとんど動作しますが、入力を期待するプロンプトが表示されず、既知の必要な入力を入力してEnterを押してすべての場合に続行できないバグを回避する方法を理解していません。

~/.acoc.confのためにgit

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

..でうまく動作alias git="acoc git".bash_profileます。


の設定を共有できますacocか?
グレッグドゥビッキー

Nvm、書くのは簡単でした。:)答えに追加されました。
グレッグデュビッキ

1

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

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

0

私はこのポストが4年前であることを知っていますが、私のキャンプからは誰も応答しませんでした。カラーブラインドです。色を区別できる場合は、私の投稿を無視してください。

たとえば、「git status」は、背景に白/白に黒(判読可能)、削除にダークグレー(黒の背景には判読可能ですが、白の背景には判読可能)、追加のミディアム(黒に大麦判読可能)のテキストを出力します背景、白い背景に判読できない)。私は、読みにくいテキストを読むことができるように、ターミナルウィンドウの背景を白/黒に切り替えました。簡単な解決策は次のとおりです。

 git status | more

これにより、標準の白または黒のバックグラウンドターミナルウィンドウですべてのテキストが読みやすくなります。


1
構成を変更して、デフォルトですべてを色なしに設定することもできます(color.ui = never)。
帽子を持つ男

0

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

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はターンしようとしていませんでしたオフ回すためにではなく、色を上の色。OPでは、彼はどのようにやるべきかを述べgit、よりグローバルな意味でそれを行う何らかの方法を望んでいます。このような方法を知っている場合は、回答を編集して説明してください。
ジプシースペルウィーバー

時々、人々は密接に関連しているものの、わずかに異なるものを探しています-しかし、投票に感謝します。
theRiley

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