git-diff 控制台默认颜色含义
git-diff console default colors meanings
我现在有点迷失在控制台中 git-diff 默认配色方案中各种颜色的含义。我似乎找不到关于它们的任何文档。我在 Manjaro/XFCE.
中使用 xfce4-terminal
git-diff 的默认配色方案似乎是“斑马”。我的 diff 中显示了八个导入语句,用 7 种不同的颜色表示。这对我来说似乎有点疯狂。
谢谢。
TL;DR
您可能在 Git 配置中设置了 diff.colorMoved
(运行 git config --get diff.colorMoved
;要查看设置者,请使用 git config --list --show-origin
)。默认 if 请求此模式确实是 zebra
,这显然让你想起了它对我所做的同样的事情:Angry Fruit Salad.
长
回到昏暗的时代,没有颜色。我们很感激 Glass TTY 取代了我们的旧打印机。 Plain diff
被发明出来,它提到了三件事:
- 添加行,由
a
表示;
- 删除行,用
d
表示;和
- 更改行,由
c
表示。
例如:
$ cat old
$ cat old
line one
line two
line three
line four
line five
$ cat new
line one
inserted
line two
line four
line 5
$ diff old new
1a2
> inserted
3d3
< line three
5c5
< line five
---
> line 5
后来,发明了 context diff 作为一种更有用的方式来展示这一点:
$ diff -c old new
*** old 2021-09-13 16:11:48.145950000 -0700
--- new 2021-09-13 16:11:56.597068000 -0700
***************
*** 1,5 ****
line one
line two
- line three
line four
! line five
--- 1,5 ----
line one
+ inserted
line two
line four
! line 5
标记字母 a
、d
和 c
替换为行前标记 +
、-
和 !
分别.
当然,“更改”只是“删除和添加”的意思。在 unified 模式下,plain diff
使用这些代替,所以不再有 !
:
$ diff -u old new
--- old 2021-09-13 16:11:48.145950000 -0700
+++ new 2021-09-13 16:11:56.597068000 -0700
@@ -1,5 +1,5 @@
line one
+inserted
line two
-line three
line four
-line five
+line 5
我将跳过“上下文”和“统一”差异之间的确切区别,因为它并不那么有趣,但两者都提供了上下文。 “统一”通常会使输出更小,更易于人类阅读,但代价是使机器解析稍微困难一些。
Colo(u)r 和 Git
最终,我们的黑白显示器让位于彩色、开窗和所有其他花哨的东西。很自然地,有人为 diff 输出添加了颜色:红色代表删除的文本,绿色代表添加的文本,这很常见。毫无疑问,选择它是因为最常见的色盲形式是红绿色。所以,随之而来的是 git diff
,它使用这些颜色来抛弃左列(“装订线”)插入以摆脱空格和 +
和 -
标记......哦,等等,它不会:
$ git diff old new
diff --git a/old b/new
index 9864d22..8e331db 100644
--- a/old
+++ b/new
@@ -1,5 +1,5 @@
line one
+inserted
line two
-line three
line four
-line five
+line 5
这解决了色盲问题,对吧?
(它在 Whosebug 上没有以纯文本显示,但是 @@
大块头是青色的,+inserted
行是绿色的,等等。)
人们对此并不满意,人类视觉系统确实非常擅长发现某些颜色差异(模常见的色盲问题:它影响大约 8% 的男性和 .5% 的女性;例如,参见 https://www.colourblindawareness.org/colour-blindness/;许多人甚至不知道他们拥有它!)。所以人们开发了更多的过滤器和模式。一些网站(特别是 GitHub)采用基本的 red/green 并对其进行标记,以在 一行内显示个别更改的字符 ,这可能相当有时有用。
Git 获得了 post-检测 moved 行的能力。1 以帮助区分从删除和添加的行中移动行,Git 可以为这些行添加不同的颜色。
启用“移动行”检测的开关是 .git/config
或 $HOME/.gitconfig
或其他 Git 配置文件中的 diff.colorMoved
,由 [=38= 操作],以及命令行 --color-moved
选项。它们采用可选的 值 ,这是要使用的配色方案的名称。
如果您在配置中启用颜色移动,您可以使用 --no-color-moved
禁用一次 git diff
调用。如果您尚未在配置中启用它,则可以使用 --color-moved
或 --color-moved=<em>mode[=110 对每个 <code>git diff
调用进行测试=]。有许多 mode
值;有关详细信息,请参阅 the git diff
documentation。
有关 运行ning git config
的信息,请参阅 the git config
documentation,包括如何确定某些系统提供的配置可能来自何处 (--list --show-origin
)。
1有差异引擎会在差异期间检测到这个,但是Git仍然主要使用那些不't(虽然 git blame
在这里不同)。相反,Git post - 在各种尝试中处理 diff 输出以使其更符合人类的期望,例如,在空行上同步更多而不是在大括号上或其他什么。这包括当前的移动线检测,它只在每个“diff hunk”中查找。
我现在有点迷失在控制台中 git-diff 默认配色方案中各种颜色的含义。我似乎找不到关于它们的任何文档。我在 Manjaro/XFCE.
中使用 xfce4-terminalgit-diff 的默认配色方案似乎是“斑马”。我的 diff 中显示了八个导入语句,用 7 种不同的颜色表示。这对我来说似乎有点疯狂。
谢谢。
TL;DR
您可能在 Git 配置中设置了 diff.colorMoved
(运行 git config --get diff.colorMoved
;要查看设置者,请使用 git config --list --show-origin
)。默认 if 请求此模式确实是 zebra
,这显然让你想起了它对我所做的同样的事情:Angry Fruit Salad.
长
回到昏暗的时代,没有颜色。我们很感激 Glass TTY 取代了我们的旧打印机。 Plain diff
被发明出来,它提到了三件事:
- 添加行,由
a
表示; - 删除行,用
d
表示;和 - 更改行,由
c
表示。
例如:
$ cat old
$ cat old
line one
line two
line three
line four
line five
$ cat new
line one
inserted
line two
line four
line 5
$ diff old new
1a2
> inserted
3d3
< line three
5c5
< line five
---
> line 5
后来,发明了 context diff 作为一种更有用的方式来展示这一点:
$ diff -c old new
*** old 2021-09-13 16:11:48.145950000 -0700
--- new 2021-09-13 16:11:56.597068000 -0700
***************
*** 1,5 ****
line one
line two
- line three
line four
! line five
--- 1,5 ----
line one
+ inserted
line two
line four
! line 5
标记字母 a
、d
和 c
替换为行前标记 +
、-
和 !
分别.
当然,“更改”只是“删除和添加”的意思。在 unified 模式下,plain diff
使用这些代替,所以不再有 !
:
$ diff -u old new
--- old 2021-09-13 16:11:48.145950000 -0700
+++ new 2021-09-13 16:11:56.597068000 -0700
@@ -1,5 +1,5 @@
line one
+inserted
line two
-line three
line four
-line five
+line 5
我将跳过“上下文”和“统一”差异之间的确切区别,因为它并不那么有趣,但两者都提供了上下文。 “统一”通常会使输出更小,更易于人类阅读,但代价是使机器解析稍微困难一些。
Colo(u)r 和 Git
最终,我们的黑白显示器让位于彩色、开窗和所有其他花哨的东西。很自然地,有人为 diff 输出添加了颜色:红色代表删除的文本,绿色代表添加的文本,这很常见。毫无疑问,选择它是因为最常见的色盲形式是红绿色。所以,随之而来的是 git diff
,它使用这些颜色来抛弃左列(“装订线”)插入以摆脱空格和 +
和 -
标记......哦,等等,它不会:
$ git diff old new
diff --git a/old b/new
index 9864d22..8e331db 100644
--- a/old
+++ b/new
@@ -1,5 +1,5 @@
line one
+inserted
line two
-line three
line four
-line five
+line 5
这解决了色盲问题,对吧?
(它在 Whosebug 上没有以纯文本显示,但是 @@
大块头是青色的,+inserted
行是绿色的,等等。)
人们对此并不满意,人类视觉系统确实非常擅长发现某些颜色差异(模常见的色盲问题:它影响大约 8% 的男性和 .5% 的女性;例如,参见 https://www.colourblindawareness.org/colour-blindness/;许多人甚至不知道他们拥有它!)。所以人们开发了更多的过滤器和模式。一些网站(特别是 GitHub)采用基本的 red/green 并对其进行标记,以在 一行内显示个别更改的字符 ,这可能相当有时有用。
Git 获得了 post-检测 moved 行的能力。1 以帮助区分从删除和添加的行中移动行,Git 可以为这些行添加不同的颜色。
启用“移动行”检测的开关是 .git/config
或 $HOME/.gitconfig
或其他 Git 配置文件中的 diff.colorMoved
,由 [=38= 操作],以及命令行 --color-moved
选项。它们采用可选的 值 ,这是要使用的配色方案的名称。
如果您在配置中启用颜色移动,您可以使用 --no-color-moved
禁用一次 git diff
调用。如果您尚未在配置中启用它,则可以使用 --color-moved
或 --color-moved=<em>mode[=110 对每个 <code>git diff
调用进行测试=]。有许多 mode
值;有关详细信息,请参阅 the git diff
documentation。
有关 运行ning git config
的信息,请参阅 the git config
documentation,包括如何确定某些系统提供的配置可能来自何处 (--list --show-origin
)。
1有差异引擎会在差异期间检测到这个,但是Git仍然主要使用那些不't(虽然 git blame
在这里不同)。相反,Git post - 在各种尝试中处理 diff 输出以使其更符合人类的期望,例如,在空行上同步更多而不是在大括号上或其他什么。这包括当前的移动线检测,它只在每个“diff hunk”中查找。