Git

gitコマンドで端末(tty)以外へ出力する場合にも色をつける方法

More than 5 years have passed since last update.

gitのリモートリポジトリの更新を確認する #git - Qiita を作ってる時に知ったTips

下記のように、gitコマンドの結果を端末へ出力する場合は、その結果に色を付けることができるのはみなさんご承知のことと思います。
(※ git config color.xxxx の値に依存します)

$ git status -s
 M hoge.txt    # <- カラー表示されます

しかし、パイプ使用時や、結果を変数へ保存する場合にはカラーになりません。

$ git status -s | cat
 M hoge.txt    # <- カラー表示されない

gitに限らず、カラー出力が可能なコマンドはだいたいこういう仕様になっているかと思います。
結果を加工する場合にはこの仕様はありがたいのですが、ときにはカラーコードを含んだ結果が欲しいこともあります。

そういう場合は以下のように実行することでカラーの結果が得られます。

$ GIT_PAGER_IN_USE=true git status | cat

$ output=$(GIT_PAGER_IN_USE=true git status)

また、一時的にコンフィグの値を変えてコマンドを実行するという方法もあります。

$ git config color.status
auto

$ git -c color.status=always status -s
 M hoge.txt    # <- カラー表示されます

$ git config color.status
auto

グローバルコンフィグの値は変わっていません。

このコンフィグの一時変更はカラー表示に限らず、他のケースにも応用出来そうなので覚えておくと良いのではないでしょうか。