git-logの色


106

実行するとgit log --decorate --pretty=oneline、出力には(HEAD, refs/published/master, master)色付けのようなエントリが含まれます。

私も私のgitconfigに以下を持っています:

[color "branch"]
    current = yellow reverse
    local = yellow
    remote = green

次のようなカスタム形式を実行するときに、これらの色をどのように複製しますか?

git log --decorate --stat --graph --pretty=format:"%d %Cgreen%h%Creset (%ar - %Cred%an%Creset), %s%n"

回答:


91

git 1.8.3(2013年5月24日)以降、を使用%C(auto)%dてのフォーマット文字列を装飾できますgit log

リリースノートから:

 * "git log --format" specifier learned %C(auto) token that tells Git
   to use color when interpolating %d (decoration), %h (short commit
   object name), etc. for terminal output.)

60

git log --decorateデフォルトで入れます。

  • シアンの頭
  • 赤のリモートブランチ
  • 緑色のタグ

color.decorate設定で変更できます 。

ただし、git log --formatは、HEAD またはリモートまたはブランチを具体的に表示する方法を提供していません。3つすべてがからまで表示され%d、1つの色が表示されます。


2013年5月の更新、以下のElad Shaharによる言及(賛成)、git 1.8.3はもう1つのオプションを提供します:

git log –format端末出力の(装飾)、(短いコミットオブジェクト名)などを%C(auto)解決するときに色を使用するようにGitに指示するトークンをスポーツします。%d%h

このアトラシアンのブログ投稿では、この機能は形式(git rebasegit count-objects)と色(git branch -vv)に焦点を当てた他のいくつかの機能の一部であるとコメントしています

これは、前auto,resetの1.8.2に追加されたもので、出力が端末に使用されていない場合、色が自動的に無効になります1

%C(auto,blue)Hello%C(auto,reset)

注:git 2.4+(2015年第2四半期)では、ブランチ名の周りの色をリセットする作業が改善されています。Junio C Hamano(によるコミット5ee8758を
参照してください:gitster

log --decorate:「コミット」色を次のアイテムに漏らさない

git log --decorate」では、次のようなコミットヘッダーが表示されます。

commit ... (HEAD, jc/decorate-leaky-separator-color)

ここで、「commit ... (」で塗装されcolor.diff.commit、「HEAD」でcolor.decorate.head、「,」でcolor.diff.commitブランチ名、で color.decorate.branch、その後クローズ「)」にcolor.diff.commit

HEADとローカルブランチの名前を本文のテキストと同じ色でペイントしたい場合(おそらく、シアンとグリーンが白地に黒の端末で淡すぎて判読できないため)、次のように言う必要はありません。

[color "decorate"]
    head = black
    branch = black

それは、白地に黒の端末で同じ設定を再利用することができないからです。あなたは単純に期待するでしょう

[color "decorate"]
    head = normal
branch = normal

動作しますが、残念ながら動作しません。
文字列 " HEAD"とブランチ名を、装飾要素間の開き括弧またはコンマと同じ色で描画します。
これは、コードが独自の色で「プレフィックス」を印刷した後に色をリセットするのを忘れているためです。


git 2.5(2015年第2四半期)ではバグが修正されることに注意してください。

参照429ad20をコミットすることにより、Junio C浜野(gitster 5月13日2015年、
(で合併Junio C浜野- gitster-fd70780コミット 2015年5月、22)

log:デコレーション名を早めに短くしないでください

log --decorate現在のブランチの先端でのコミットを示すGit 2.4 の " "拡張機能、例えば " HEAD -> master"は--decorate = fullでは機能しませんでした。


Gitの2.9.x +(Q3 2016)別のバグと修正されます名誉color=autoのために%C(auto)


Git 2.10.2(2016年10月)は、コミット82b83da(2016年9月29日)と他のバグを修正し、RenéScharfe ( ``)によるc99ad27(2016年9月17日)をコミットします。
(による合併Junio C浜野- gitster-76796d4コミット、2016年10月28日)を

pretty%C(auto)出力が空の場合のリセットの追加を避けます

%C(auto)自動色付けが意図したとおりに表示されるように、色と属性をリセットするためのエスケープシーケンスを発行します。
出力strbufがemptyの場合、つまり%C(auto)フォーマット文字列の先頭に表示される場合は、リセットする必要がなく、出力に数バイトを保存するため、これをやめます。

pretty%C(auto)すべての属性をリセットします

と属性をリセット%C(auto)して、それらを完全に自動制御できるようにします。そうしないと、太字や反転などの属性が以前の%Cプレースホルダーから引き続き有効になる可能性があります


3
--decorateおよび--pretty = "... stuff"を使用する方法はありませんか?
NorthIsUp

8
@NorthlsUp:--decorateながら、独自の実装と構成を持っているように見える--prettyを通じて申し出同じ情報を%dあなたが持つ色構成の同じきめ細かくていないことができることを意味し、一つとしてブロック--prettyあなたが持っているよりを--decorate
VonC、2011

「git log」の後に「--decorate」を追加したときに私が見る唯一の違いは、「refs / heads / ...」または「refs / remotes ...」で始まるリポジトリです。色はどちらの方向にも表示されます。何がこれを引き起こすのでしょうか?私が尋ねる理由は、私の.gitconfigが色のプロパティを何も表示しないためです。「color.decorate」プロパティはどこにあるのでしょうか。.gitconfigファイルに表示されません。
Jウッドチャック

@JWoodchuck試してくださいgit config --show-origin -lすべての設定が表示されます。その後、「色」をgrepできます。
VonC

うん、色をgrepしても何も表示されないので、設定がどこに表示されるのかが不思議です。
Jウッドチャック

9

それらを括弧で囲みます:

%C(...): color specification, as described in color.branch.* config option

だから、%C(yellow reverse)働くだろう。


1
完全で%dはありませんが、すべてのブランチはのようになる可能性があります。(HEAD, master)この場合、ヘッドは青、マスターは緑である必要があります(これらはデフォルトの色であると思います)。どこ%C(yellow)%d%Cresetでも同じ色になります。
NorthIsUp

2
ああ、個々の装飾を着色します。不可能だと思います。ログエントリをレンダリングするコードは、基本的に2回実装されています。
ジョシュリー

1
残念ながら、これは不可能です...やりたいと思いますgit log --decorate --oneline --date=...
mgalgs

8

configオプションlog.decorateは、ログのデフォルトの装飾を有効/無効にすることができます。

git config --global log.decorate full

それが終わったらcolor.decorate.*、色を使って遊ぶことができます


3
log.decorate=fullref名をプレフィックス(refs/heads/など)とともに出力します。私はlog.decorate=shortもっと便利だと思います。
musiphil

1
非常に便利な設定ですが、私も好きshortですfull
Thomas Levesque '17

4

%C(colorname) これを使用したい人もいるでしょう:これは色設定を変更する必要はありません。

例:著者名を黄色に着色

--pretty=format:"%C(yellow)%an%Creset"

通常のANSIカラーが機能するはずですhttps://en.wikipedia.org/wiki/ANSI_escape_code

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