Google search for "git diff change colors" 将此问题显示为热门问题,所以让我添加我来这里寻找的信息,现在我已经弄清楚了,知道其他人也会来到这里寻找相同的信息。
基本git diff 颜色选项:
-
meta = 标头信息(默认为白色),如下所示:
diff --git a/home/.bashrc b/home/.bashrc
index 148212d..a0d16d8 100644
--- a/home/.bashrc
+++ b/home/.bashrc
-
old = 删除的行(默认为红色)
-
new = 添加的行(默认为绿色)
在 ~/.gitconfig 中的全局 gitconfig 文件中更改这些颜色,如下所示:
git config --global color.diff.meta blue
git config --global color.diff.old blue
git config --global color.diff.new blue
或直接编辑 ~/.gitconfig 并添加以下行:
[color "diff"]
meta = blue
old = blue
new = blue
有关更多颜色设置或您可以更改的“插槽”,请查看手册页:
man git config
或查看online here,然后搜索color.diff.<slot>。
我可以使用哪些颜色?
查看man git config 的颜色部分,或在线访问:https://git-scm.com/docs/git-config#Documentation/git-config.txt-color
颜色
采用颜色的变量的值是颜色列表(最多两种,一种用于前景,一种用于背景)和属性(任意数量),以空格分隔。
接受的基本颜色是normal、black、red、green、yellow、blue、magenta、cyan和white。给出的第一个颜色是前景;第二个是背景。除了normal 之外的所有基本颜色都有一个明亮的变体,可以通过在颜色前面加上bright 来指定,例如brightred。
颜色也可以用 0 到 255 之间的数字表示;这些使用 ANSI 256 色模式(但请注意,并非所有终端都支持此模式)。如果您的终端支持,您还可以将 24 位 RGB 值指定为十六进制,例如 #ff0ab3。
接受的属性是 bold、dim、ul、blink、reverse、italic 和 strike(用于划掉或“删除线”的字母)。任何属性相对于颜色的位置(之前、之后或中间)都无关紧要。可以通过在特定属性前加上 no 或 no-(例如,noreverse、no-ul 等)来关闭它们。
一个空的颜色字符串根本不会产生颜色效果。这可用于在不完全禁用颜色的情况下避免为特定元素着色。
对于 git 的预定义颜色槽,属性意味着在彩色输出中每个项目的开头重置。因此,将color.decorate.branch 设置为black 会将分支名称绘制为纯black,即使同一输出行上的前一个内容(例如,在log --decorate 输出中的分支名称列表之前打开括号)设置为用bold 或其他属性绘制。但是,自定义日志格式可能会进行更复杂和分层的着色,并且否定形式可能会在那里有用。
具有前景、背景和文本属性(粗体、斜体、删除线)的更复杂示例:
这是一个更复杂的例子。第一种颜色是前景色,第二种颜色是背景色,之后的任何词都是属性。有关详细信息,请参阅上面引用的 manual 页面。
运行这些命令:
git config --global color.diff.meta "blue"
git config --global color.diff.old "black red strike"
git config --global color.diff.new "black green italic"
git config --global color.diff.context "yellow bold"
或将以下内容复制/粘贴到 ~/.gitconfig 文件的底部:
[color "diff"]
meta = blue
old = black red strike
new = black green italic
context = yellow bold # context (ie: unchanged lines) text
下面是git diffn (git diff with line numbers) 的一些示例输出以及这些设置。请注意已删除行的红色删除线文本。很酷。直到今天我才知道这是可能的(虽然我不喜欢这些颜色——我认为默认是最好的:))。
还要注意冒号没有着色或样式化以匹配左右周围的文本。这是有意和设计的行为,用作左侧添加的行号和右侧的原始git diff 输出之间的视觉分隔符。