rogerxu / git-tips

Tips for Git
Apache License 2.0
2 stars 3 forks source link

Custom git colors #24

Open rogerxu opened 7 years ago

rogerxu commented 7 years ago

Git-Config Colors and Include - Tyler Cipriani

Git tip: Beautiful colored and readable output - LeaseWeb labs

New Color Options

rogerxu commented 7 years ago

color.diff

Git - git-config Documentation

https://github.com/git/git/blob/1d89318c48d233d52f1db230cf622935ac3c69fa/diff.c#L55-L92

static char diff_colors[][COLOR_MAXLEN] = {
    GIT_COLOR_RESET,
    GIT_COLOR_NORMAL,   /* CONTEXT */
    GIT_COLOR_BOLD,     /* METAINFO */
    GIT_COLOR_CYAN,     /* FRAGINFO */
    GIT_COLOR_RED,      /* OLD */
    GIT_COLOR_GREEN,    /* NEW */
    GIT_COLOR_YELLOW,   /* COMMIT */
    GIT_COLOR_BG_RED,   /* WHITESPACE */
    GIT_COLOR_NORMAL,   /* FUNCINFO */
    GIT_COLOR_BOLD_MAGENTA, /* OLD_MOVED */
    GIT_COLOR_BOLD_BLUE,    /* OLD_MOVED ALTERNATIVE */
    GIT_COLOR_FAINT,    /* OLD_MOVED_DIM */
    GIT_COLOR_FAINT_ITALIC, /* OLD_MOVED_ALTERNATIVE_DIM */
    GIT_COLOR_BOLD_CYAN,    /* NEW_MOVED */
    GIT_COLOR_BOLD_YELLOW,  /* NEW_MOVED ALTERNATIVE */
    GIT_COLOR_FAINT,    /* NEW_MOVED_DIM */
    GIT_COLOR_FAINT_ITALIC, /* NEW_MOVED_ALTERNATIVE_DIM */
};

static const char *color_diff_slots[] = {
    [DIFF_CONTEXT]            = "context",
    [DIFF_METAINFO]           = "meta",
    [DIFF_FRAGINFO]           = "frag",
    [DIFF_FILE_OLD]           = "old",
    [DIFF_FILE_NEW]           = "new",
    [DIFF_COMMIT]             = "commit",
    [DIFF_WHITESPACE]         = "whitespace",
    [DIFF_FUNCINFO]           = "func",
    [DIFF_FILE_OLD_MOVED]         = "oldMoved",
    [DIFF_FILE_OLD_MOVED_ALT]     = "oldMovedAlternative",
    [DIFF_FILE_OLD_MOVED_DIM]     = "oldMovedDimmed",
    [DIFF_FILE_OLD_MOVED_ALT_DIM] = "oldMovedAlternativeDimmed",
    [DIFF_FILE_NEW_MOVED]         = "newMoved",
    [DIFF_FILE_NEW_MOVED_ALT]     = "newMovedAlternative",
    [DIFF_FILE_NEW_MOVED_DIM]     = "newMovedDimmed",
    [DIFF_FILE_NEW_MOVED_ALT_DIM] = "newMovedAlternativeDimmed",
};

https://github.com/git/git/blob/1d89318c48d233d52f1db230cf622935ac3c69fa/color.h#L24-L46

#define GIT_COLOR_NORMAL    ""
#define GIT_COLOR_RESET     "\033[m"
#define GIT_COLOR_BOLD      "\033[1m"
#define GIT_COLOR_RED       "\033[31m"
#define GIT_COLOR_GREEN     "\033[32m"
#define GIT_COLOR_YELLOW    "\033[33m"
#define GIT_COLOR_BLUE      "\033[34m"
#define GIT_COLOR_MAGENTA   "\033[35m"
#define GIT_COLOR_CYAN      "\033[36m"
#define GIT_COLOR_BOLD_RED  "\033[1;31m"
#define GIT_COLOR_BOLD_GREEN    "\033[1;32m"
#define GIT_COLOR_BOLD_YELLOW   "\033[1;33m"
#define GIT_COLOR_BOLD_BLUE "\033[1;34m"
#define GIT_COLOR_BOLD_MAGENTA  "\033[1;35m"
#define GIT_COLOR_BOLD_CYAN "\033[1;36m"
#define GIT_COLOR_BG_RED    "\033[41m"
#define GIT_COLOR_BG_GREEN  "\033[42m"
#define GIT_COLOR_BG_YELLOW "\033[43m"
#define GIT_COLOR_BG_BLUE   "\033[44m"
#define GIT_COLOR_BG_MAGENTA    "\033[45m"
#define GIT_COLOR_BG_CYAN   "\033[46m"
#define GIT_COLOR_FAINT     "\033[2m"
#define GIT_COLOR_FAINT_ITALIC  "\033[2;3m"

Bash Colors

bash:tip_colors_and_formatting - FLOZz' MISC

The escape sequences are composed of the Escape character (often represented by “^[” or “<Esc>”) followed by some other characters: “<Esc>[<FormatCode>m”.

In Bash, the <Esc> character can be obtained with the following syntaxes:

Git Config

git config

$ git config --global color.diff.old "red strike"
$ git config --global color.diff.new "green italic"

.gitconfig

[color "diff"]
    old = red strike
    new = green italic
    oldMoved = red blue strike
    oldMovedAlternative = blue magenta strike
    newMoved = green magenta bold
    newMovedAlternative = cyan blue bold
[diff]
    colorMoved = default