web-dev-qa-db-ja.com

git-logの色

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"
102
NorthIsUp

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.)
_
83
Elad Shahar

git log --decorateはデフォルトで次を配置します。

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

color.decorate configで変更できます。

しかし、 git log --format は、HEADを具体的に表示する方法を提供しません。or remotes or branch:3つすべて%dを介して表示され、1色が可能です。


Elad Shahar による 下記を参照 (アップグレード)として、2013年5月を更新し、git 1.8.3にはもう1つのオプションがあります:

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

この Atlassianブログの投稿 は、この機能がフォーマット(git rebasegit count-objects)および色(git branch -vv)に焦点を当てた他のいくつかの機能の一部であるとコメントしています

これは、以前の auto,reset of 1.8.2 に追加されます。これは、端末1で出力が使用されない場合に自動的に色を無効にします

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

注:git 2.4+(2015年第2四半期)では、ブランチ名の周りの色をより適切にリセットできます。
commit 5ee8758 による Junio C Hamano(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四半期)ではバグが修正されていることに注意してください。

commit 429ad2 by Junio C Hamano(gitster 、2015年5月13日を参照してください。
Junio C Hamano-gitster- in commit fd7078 、2015年5月22日)

log:装飾名を短くしすぎないでください

Git 2.4の「log --decorate」の機能強化は、現在のブランチの先端でコミットを表示します。 「HEAD -> master」、-decorate = fullでは機能しませんでした。


Git 2.9.x +(2016年第3四半期)は別のバグを修正し、 %C(auto)color=autoを称える


Git 2.10.2(2016年10月)は、 commit 82b83da (2016年9月29日)、および commit c99ad27 (2016年9月17日)による RenéScharfe( `` )
コミットC浜野-gitster- 内の commit 76796d4 、2016年10月28日)

pretty:出力が空の場合、%C(auto)のリセットを追加しない

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

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

色のリセットおよび属性%C(auto)を適用すると、色を完全に自動制御できます。 それ以外の場合、ボールドやリバースなどの属性は、以前の%Cプレースホルダーから引き続き有効です。

57
VonC

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

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

したがって、%C(yellow reverse)は機能します。

9
Josh Lee

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

git config --global log.decorate full

それが完了したら、color.decorate.*を使用して色で遊ぶことができます

8

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

例:著者名を黄色に色付けする

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

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

  • 青い
  • マゼンタ
  • シアン
1