112

実行すると、出力には配色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"
4

5 に答える 5

60

git log --decorateデフォルトでは、次のようになります。

  • シアンのHEAD
  • 赤で示したリモート ブランチ
  • タグは緑色

color.decorateconfigで変更できます 。

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


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 ( )によるcommit 5ee8758
を 参照してください。gitster

log --decorate: 次のアイテムに「commit」カラーをリークしない

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

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

ここで、「」commit ... (は で、 で は 、 で は 、で は、 で は 支店 名 で 、 で は で 閉じます。color.diff.commitHEADcolor.decorate.head,color.diff.commitcolor.decorate.branch)color.diff.commit

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

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

黒地に白の端末では同じ構成を再利用できないためです。あなたは素朴に期待するでしょう

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

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


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

2015年5月 13 日のJunio C Hamano ( )によるコミット429ad20参照してください。gitster
gitster

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

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


Git 2.9.x+ (Q3 2016) は別のバグを修正color=auto%C(auto)


Git 2.10.2 (2016 年 10 月) は、commit 82b83da ( 2016 年 9 月 29 日) およびcommit c99ad27 (2016 年 9 月 17 日) by René Scharfe (``)で他のバグを修正しました。
( 2016 年 10 月 28 日、コミット 76796d4Junio C Hamanoによってマージされました)gitster

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

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

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

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

于 2011-05-05T04:08:55.717 に答える
9

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

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

それで%C(yellow reverse)うまくいくでしょう。

于 2011-05-04T23:02:06.807 に答える
8

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

git config --global log.decorate full

それが完了したらcolor.decorate.*、色で遊ぶために使用できます

于 2012-03-23T17:51:23.137 に答える