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
。
しかし、コマンド出力に色を追加するためのより一般的な解決策はありますか?
セクションを作成できます[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
これであなたが始められることを願っています。そしてもちろん、色をサポートする端末が必要です。
おそらく使いたい
git config --global color.ui auto
auto
の部分は、gitがそれをサポートする端末でのみ色を使用しようとすることを示しています。たとえば、gitコマンドの出力をファイルにリダイレクトした場合、ANSIシーケンスは取得されません。 true
に設定することはauto
と同じであり、これはGit 1.8.4以降のデフォルトでもあります。
color.ui
は、gitコマンドで使用できるさまざまなcolor.*
構成をすべて含むメタ構成です。
これについては、git help config
で詳しく説明しています。
git config --global color.ui auto
git config --global color.branch auto
git config --global color.status auto
受け入れられた答えは、最も一般的な解決策を提供します。なんらかの理由で構成を永続的に変更する必要がない場合は、そのソリューションのように、1つの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でサポートされていますnot git 1.7.1でサポートされています。
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 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
..これはalias git="acoc git"
の.bash_profile
とうまく連動します。
投稿は4歳ですが、私のキャンプであるカラーブラインドからは誰も応答しませんでした。色を区別できる場合は、私の投稿を無視してください。
たとえば、「git status」は、背景が白/白の背景が黒のテキスト(判読可能)、削除された場合は濃い灰色(黒の背景では判読不能、白の背景では判読可能)、追加された場合は中程度の灰色(大麦は黒で判読可能)のテキストを出力します。背景、白い背景では判読できません)。端末ウィンドウの背景を白/黒に切り替えて、判読できないテキストを読みました。簡単な解決策はもっとあります:
git status | more
これにより、標準の白または黒の背景のターミナルウィンドウですべてのテキストが読みやすくなります。
git diff
の出力を色分けするには、color.diffセクションを〜/ .gitconfigに追加します。例えば:
[color "diff"]
new = bold italic 154
old = bold italic 196
ここで154
および196
はANSI 256色コードです。詳細については、man git config
をご覧ください。
または、すべて/ほとんどのカラー化をオフにします。
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
https://github.com/dandavison/delta を見て、(git)diff出力の色分けされた言語構文の強調表示と、diffに追加/削除された行の色分けされた強調表示を確認してください。