

arguments are given, only those paths are affected.

This can, for example, be useful to remove all build products. Normally, only files unknown to Git are removed, but if the -x option is specified, ignored files are also removed. Git-clean - Remove untracked files from the working tree Synopsis git clean …Ĭleans the working tree by recursively removing files that are not under version control, starting from the current directory. Remote_branch_color="$(git config -get-color white)"Įcho "Pushing to $" To get the user's configured colours, you can use git config -get-colour: reset_color="$(tput sgr0)" Then if you wanted, you could reintroduce colours later. 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. Note that -c must come before the status or diff argument, and not after.Īlternatively, for diff, show, log and grep commands, you can use -color=always after the command: git diff -color=always | less -REX To avoid changing your git config, you can enable colour just for the current command by passing a config variable with -c.įor the status command, the variable is color.status: git -c color.status=always status | less -REXįor diff, show, log and grep commands, the variable is color.ui: git -c color.ui=always diff | less -REX
#Git color ui how to#
Produces no colored git status output, and you can even see here that I'm explicitly converting the leading hash-characters to blue because it helps highlight the different regions of output from my script.ĭoes anyone know how to get it to put out the colors? Is there maybe a standard program I can use that can be used as a "fake terminal" STDIN/STDOUT pipe? I am in fact also working on a pty pseudoterminal tool so I could certainly make use of that for this purpose, but it's a rather heavy-handed solution (and not ready for use yet as I haven't finished building it). Produces perfect output, but (excerpt from my script follows) git status | sed "s/^#/\x1b[34m#[0m/" To be abundantly clear, this is the issue: $ git status

Unfortunately unlike git diff there is no option for forcing color for git status that I can find. My global git config is set so that the lists of changed and untracked files show up in color in the git status.

If colors help for interactive use, why wouldn't they help in script use where I might be aggregating data and crunching even more data than I would manually? Wouldn't colors be even more important?Īnyway, I have a neat little shell script I wrote that munges git status output, and i'm just looking to make this script keep the colors intact. It does seem like I'm going against the grain here, but I honestly don't see what the big deal is about having to parse stuff like escape codes in scripts. I like to see color because my scripting is robust enough (so far) to handle the color codes. This is… okay, but it would probably be saner to use porcelain or some such and re-build the colored parts myself! Part of why i wanted it was so I can both parse it and pass it along in my own script output. I would like to make a recommendation that parsing colors is a generally ill-conceived idea.
