91

Git用にきれいなフォーマットの色を設定しようとしています。私が言えることから、バージョン1.6.0は赤、緑、青のみを認識します。

$ git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %Cyellowyellow%Creset %Cblueblue%Creset %Cmagentamagenta%Creset %Ccyancyan%Creset %Cwhitewhite%Creset"
red green %Cyellowyellow%Creset blue %Cmagentamagenta %Ccyancyan %Cwhitewhite

さらに、括弧で囲まれたカラー形式ではどの色も機能しません。

Gitで利用可能なきれいなフォーマットの色を一覧表示する方法はありますか?

残念ながら、これはレガシーSCO OpenServer 5.0.7マシン上にあり、SCOSkunkworksによってリリースされたGitの最後のバージョンは1.6.0.3でした。

4

5 に答える 5

155

、 、以外gitの色がサポートされていることを確認するための の古いバージョンはありません。redbluegreen

ただし、最近のバージョンgit(私が使用した 1.7.10 など) でも気づいたことの 1 つは、 以外の色でredあり、green括弧blue内にある必要があること()です。redgreenおよびの場合blue、括弧はオプションです。

だからこれを試してみてください:

git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %C(Yellow)yellow%Creset %Cblueblue%Creset %C(magenta)magenta%Creset %C(cyan)cyan%Creset %C(white)white%Creset"

少なくとも私が知っているのリストは次のとおりです。

normal
black
red
green
yellow
blue
magenta
cyan
white

次の属性のいずれかと組み合わせることができます。

bold
dim
ul
blink
reverse
italic
strike
bright  # (Git 2.26, Q1 2020, example: brightred)

を使用して色を変更しようとしている場合は、前景背景.gitconfigの 2 つの色を指定でき、それを属性と組み合わせることができます。

于 2013-03-17T07:03:33.350 に答える
43

Git 2.3.0 (2015 年 2 月) では ( Jeff Kink ( peff)に感謝):


parse_color: 24 ビット RGB 値をサポート

一部の端末 (XTerm など) では、通常の ANSI カラー スキームの拡張機能を使用して、完全な 24 ビット RGB カラー仕様を使用できます。
ユーザーが 16 進数の RGB カラーを指定できるようにして、ホット ピンクの ref 装飾の非常に重要な機能を有効にします。

git log --format="%h%C(#ff69b4)%d%C(reset) %s"

  • 色属性のより良い管理:

parse_color: " " を認識して属性no$fooをクリアします$foo

カラースペックに「reverse」を入れることで、「reverse」などの ANSI テキスト属性をオンにすることができます。ただし、リバースをオフにするように依頼することはできません。

一般的なケースでは、これは問題ではありません。色付きのセクションの先頭で「反転」をオンにしてから、「リセット」ですべての属性をクリアします。

ただし、一部の属性をオンにしてから、他の属性を選択的に無効にしたい場合があります。例えば:

git log --format="%C(bold ul yellow)%h%C(noul) %s"

ハッシュのみに下線を付けますが、残りの属性を再指定する必要はありません。

contrib/diff-highlightこれは、既存のカラーリングを中断せずに属性のオン/オフを切り替えたいなどのサードパーティ プログラムにも役立ちます。

一部の属性指定はおそらく無意味であることに注意してください (例: " bold nobold")。そのような構造にわざわざフラグを立てることはせず、代わりに端末にそれを整理させます。


Git 2.26 (2020 年第 1 四半期) では、基本的な 7 色が明るい対応する色 (例: " brightred")を学習しました。

Eyal Soha (``)によるcommit c444f03commit 1751b09commit 4a28eb0 (2020 年 1 月 21 日)を参照してください。( 2020 年 2 月 25 日コミット 87f17d7Junio C Hamanoによってマージされました)
gitster

color.c: aixterm の明るい色をサポート

署名者: Eyal Soha

これらの色は、3 ビット色の明るい変種です。

前景が 30 ~ 37 の範囲、背景が 40 ~ 47 の範囲ではなく、それぞれ 90 ~ 97 と 100 ~ 107 の範囲に存在します。

git configドキュメントには次のものが含まれるようになりました。

受け入れられる 基本normalblackな色redは、、、、、、、、およびgreenです。 指定された最初の色は前景です。2番目は背景です。yellowbluemagentacyanwhite

を除くすべての基本色には、色の前になどnormalを付けて指定できる明るいバリエーションがあります。brightbrightred


Git 2.35 (2022 年第 1 四半期) では、" default" と " reset" の色がパレットに追加されました。

commit de65851 (2021 年 10 月 26 日) およびcommit 05f1f41commit aeefc18 (2021 年 10 月 25 日) by Robert Estelle ( rwe)を参照してください。
( 2021 年 12 月 15 日、コミット 15209c8Junio C Hamanoによってマージされました)gitster

color: 色の前に「リセット」を付けることができます

署名者: Robert Estelle

「リセット」は、以前は を表すスタンドアロンの特別な色の名前として扱われていました\e[m
現在は、他のカラー プロパティに適用できるため、暗黙的な属性の継承なしで正確な指定が可能です。

たとえば、「緑をリセット」すると がレンダリングされるよう\e[;32mになりました。これは、「すべてをリセットしてから前景を緑に設定する」と解釈されます。
これは、背景やその他の属性もデフォルトにリセットされることを意味します。

以前はこれを単一の色で表現することは不可能でした。「reset」を単独で指定したり、属性を持つ色を指定したりすることはできましたが、背景色をクリアするなどのことは不可能でした。

それを支援するために「デフォルト」の色名を導入する別の変更がありますが、それでも、上記は各属性を明示的に無効にすることによってのみ表すことができます: green default no-bold no-dim no-italic no- ul ノーブリンク ノーリバース ノーストライク

configmanページに含まれるようになりました:

疑似属性resetは、指定された色を適用する前に、すべての色と属性をリセットします。たとえば、reset greenアクティブな属性を持たない、前景が緑、背景がデフォルトになります。

于 2015-01-31T21:57:15.093 に答える
7

私のgitログ形式を共有してください:

$ git log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

~/.gitconfigにエイリアスを追加することもできます:

[alias]
    logs  = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

次に、で定義したようにエイリアスを使用できます~/.gitconfig

$ git logs
于 2015-01-21T08:42:23.000 に答える