2

Windows 7、PowerShell、および Posh-Git を使用して Git を使用しています。次のエイリアス設定があります。

ls = log --pretty=tformat:"%C(yellow)%h\\ %C(green)[%ad]%C(cyan)\\ <%cn>\\ %C(reset)%s%C(auto)%d"

問題は、出力をclip.exeにパイプしてクリップボードにコピーすると、色の一部の文字もコピーされることでした。--no-color少し読んだところ、オプションが指定されている場合にデフォルトの色を使用するように、「自動」を追加できることがわかりました。だから今私は持っています:

ls = log --pretty=tformat:"%C(auto,yellow)%h\\ %C(auto,green)[%ad]%C(auto,cyan)\\ <%cn>\\ %C(auto,reset)%s%C(auto)%d"

私が今抱えている問題は、参照を示す出力の最後のビットです。--no-colorgitがブランチとタグにデフォルトの色を適用するように、色を自動に設定していますが、オプションを尊重する方法がわかりません。%C(auto) に設定すると、常に色が表示されます。私は %C(auto,auto) を試してみましたが、それは で動作しますが--no-color、それがないと git は文句を言います:

error: invalid color value: auto
fatal: unable to parse --pretty format
4

1 に答える 1

3

--no-colorオプションを尊重する方法がわかりません。
に設定すると%C(auto)、常に色が表示されます。

これは git 2.9.x+ (2016 年第 3 四半期) で修正される予定です。

Edward Thomson ( )によるcommit b15a3e0 (2016 年 5 月 27 日)を参照してください。( 2016 年 6 月 20 日コミット 1b3d14cJunio C Hamanoによってマージされました)ethomson
gitster

format_commit_messagecolor=auto:名誉%C(auto)

git-log(1)フォーマットのプレースホルダーを指定すると、「色が再び切り替わるまで、%C(auto)次の自動色付けがオンになる」ドキュメント。%placeholders

ただし、%C(auto)を使用すると、現在の実装は無条件に色をオンにします (現在のコンテキストで色構成がオフになっている場合でも、たとえば、--no-color色が指定されていたり、色が指定されてautoいて、出力が tty でない場合でも)。

format_commit_oneの書式文字列が指定されている場合に現在のコンテキストを調べるように更新し%C(auto)ます。これにより、無条件に色が書き込まれないことが保証されます。
これにより、その動作が の動作と一致し%C(auto,<colorname>)、ユーザーは、出力が tty の場合にのみ色を表示するように指定できるようになります。

これは、git-for-windows 2.9.0 で表示されるものです。

無色は効かない

しかし、より最近の 2.9.x+ git バージョンで--no-colorは動作します:

無色は機能します

于 2016-06-21T00:46:44.697 に答える