【问题标题】:How do you customize the color of the diff header in git diff?如何在 git diff 中自定义 diff 标头的颜色?
【发布时间】:2014-11-15 00:36:25
【问题描述】:

当我运行git diff 时,每个差异的标题部分都以白色文本显示。由于我使用的是浅色背景,因此难以阅读,所以我想更改它。

我发现我可以像这样(在.gitconfig)中更改差异输出中的其他颜色:

[color "diff"]
    old = green
    new = red

但我不知道该放什么作为标题颜色。更好的是,是否有记录所有默认 git config 设置的地方?

“差异标头”是指这样的行:

diff --git a/README.md b/README.md
index f102026..c5e3428 100644
--- a/README.md
+++ b/README.md

【问题讨论】:

    标签: git


    【解决方案1】:

    尝试设置color.diff.meta,例如

    git config --global color.diff.meta blue
    

    或者通过手动编辑配置文件

    [color "diff"]
        meta = blue
    

    您可以查看各种color. 设置in the git-config reference 以获得更多可能的设置。 color.diff.meta 设置在此处列出:

    color.diff.<slot>
    使用自定义颜色进行差异着色。 <slot> 指定补丁的哪一部分使用指定的颜色,是plain(上下文文本)、meta(元信息)、frag(hunk header)、func(hunk header 中的函数)之一)、old(删除的行)、new(添加的行)、commit(提交标头)或whitespace(突出显示空白错误)。这些变量的值可以指定为color.branch.<slot>

    【讨论】:

    • 好答案,但我也想更改新行和旧(已删除)行的颜色,所以我做了研究并在这里扩展了你的答案:stackoverflow.com/a/61993060/4561887
    • 或者如果你想避免编辑你的全局配置(也许是一次性的):git -c color.diff.meta=blue diff <file1> <file2>
    【解决方案2】:

    Google search for "git diff change colors" 将此问题显示为热门问题,所以让我添加我来这里寻找的信息,现在我已经弄清楚了,知道其他人也会来到这里寻找相同的信息。

    基本git diff 颜色选项:

    1. meta = 标头信息(默认为白色),如下所示:

       diff --git a/home/.bashrc b/home/.bashrc
       index 148212d..a0d16d8 100644
       --- a/home/.bashrc
       +++ b/home/.bashrc
      
    2. old = 删除的行(默认为红色)

    3. 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

    颜色

    采用颜色的变量的值是颜色列表(最多两种,一种用于前景,一种用于背景)和属性(任意数量),以空格分隔。

    接受的基本颜色是normalblackredgreenyellowbluemagentacyanwhite。给出的第一个颜色是前景;第二个是背景。除了normal 之外的所有基本颜色都有一个明亮的变体,可以通过在颜色前面加上bright 来指定,例如brightred

    颜色也可以用 0 到 255 之间的数字表示;这些使用 ANSI 256 色模式(但请注意,并非所有终端都支持此模式)。如果您的终端支持,您还可以将 24 位 RGB 值指定为十六进制,例如 #ff0ab3

    接受的属性是 bolddimulblinkreverseitalicstrike(用于划掉或“删除线”的字母)。任何属性相对于颜色的位置(之前、之后或中间)都无关紧要。可以通过在特定属性前加上 nono-(例如,noreverseno-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 输出之间的视觉分隔符。

    【讨论】:

    • 如果您想避免更改全局配置(即,您只想一次性更改颜色),您可以通过-c 传递参数,例如:git -c color.diff.new=cyan diff <file1> <file2> 以青色显示所有添加
    • 随时自定义终端颜色的好方法
    • @jasonleonhard 是的,我也忘了添加复杂的说明符,你只需要添加引号。例如粗体青色:git -c color.diff.new="cyan bold" diff <file1> <file2>
    • @caot,你到底尝试了什么?
    【解决方案3】:

    绝对推荐:diff-so-fancy

    “diff-so-fancy 力求使您的 diff 变得人类可读而不是机器可读。这有助于提高代码质量并帮助您更快地发现缺陷。”

    【讨论】:

    • 为什么?请添加某种优势说明。
    • 添加了他们在其网站上提供的 blerp。易读性也很好,高对比度的颜色。
    【解决方案4】:

    如果您在 Windows 环境中尝试此操作,您可能会在“C:\Users\username\.gitconfig”找到您的全局 .gitconfig。

    git config --global 有效,但如果你像我一样多次运行它,你最终会在 .gitconfig 中出现重复的条目。那时您可能只想手动编辑它。

    【讨论】:

      猜你喜欢
      • 2011-03-25
      • 2013-01-05
      • 2015-03-22
      • 2015-07-26
      • 1970-01-01
      • 2012-03-31
      • 2012-09-09
      • 2010-10-30
      • 2011-10-07
      相关资源
      最近更新 更多