To avoid changing your git config, you can enable colour just for the current command by passing a config variable with -c
.
For the status
command, the variable is color.status
:
git -c color.status=always status | less -REX
For diff
, show
, log
and grep
commands, the variable is color.ui
:
git -c color.ui=always diff | less -REX
Note that -c
must come before the status
or diff
argument, and not after.
Alternatively, for diff
, show
, log
and grep
commands, you can use --color=always
after the command:
git diff --color=always | less -REX
Note: As Steven said, if you are trying to extract meaningful data, then instead of parsing colours to extract meaning, you can use --porcelain
to get more parser-friendly output.
git status --porcelain | awk ...
Then if you wanted, you could reintroduce colours later.
To get the user's configured colours, you can use git config --get-colour
:
reset_color="$(tput sgr0)"
remote_branch_color="$(git config --get-color color.branch.remote white)"
echo "Pushing to ${remote_branch_color}${branch_name}${reset_color}"
Some more examples here.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…