Git 什么是;1行添加空白错误“;你是说什么时候贴补丁?

Git 什么是;1行添加空白错误“;你是说什么时候贴补丁?,git,whitespace,patch,git-patch,Git,Whitespace,Patch,Git Patch,我正在编辑一个克隆的远程存储库的一些标记文件,并想测试如何从一个分支到另一个分支创建和应用补丁。但是,每次我进行任何更改时,都会在git apply期间收到以下消息: 0001-b.patch:16: trailing whitespace. warning: 1 line adds whitespace errors. (这发生在我的Mac电脑上,我不知道原始代码是在哪里创建的。) 警告消息是什么意思?我需要关心吗?你不需要关心 该警告制定了一个关于空白的文本文件清洁标准,这是许多程序员往往

我正在编辑一个克隆的远程存储库的一些标记文件,并想测试如何从一个分支到另一个分支创建和应用补丁。但是,每次我进行任何更改时,都会在git apply期间收到以下消息:

0001-b.patch:16: trailing whitespace.
warning: 1 line adds whitespace errors.
(这发生在我的Mac电脑上,我不知道原始代码是在哪里创建的。)


警告消息是什么意思?我需要关心吗?

你不需要关心

该警告制定了一个关于空白的文本文件清洁标准,这是许多程序员往往关心的事情。正如所解释的那样:

被视为空白错误的内容是受控的 按core.whitespace配置。默认情况下,尾随空格 (包括仅由空格组成的行)和空格 一个字符,该字符后面紧跟一个制表符 行的初始缩进被视为空白错误

默认情况下,该命令输出警告消息,但应用修补程序


因此,“错误”意味着更改引入了尾随空格、仅限空格的行或制表符前面的空格。除此之外,更改没有任何错误,它将干净、正确地应用。换句话说,如果您不关心“不正确”的空格,可以忽略该警告或使用git config apply将其关闭。此处显示了可视图像的空格错误


当您想要区分“旧的”空白错误(您可能希望保留旧的原因)和“新的”空白错误(您希望避免)时,您可以合理地关心

为此,Git 2.5+(2015年第2季度)将提出一个更具体的空白检测选项

参见,和[2015年5月26日]by.
(于2015年6月11日被合并)

diff.c
--ws-error highlight=
选项 传统上,我们只关心引入的空格分隔符 以新行显示。
有些人想在旧电脑上画空白 还有台词。当他们在新行上看到空格破损时,他们 可以在相应的屏幕上发现相同类型的空格破损 老台词,想说“啊,那些破碎在那里,但它们 都是从原始版本继承的,所以现在我们不要碰它们。”

引入允许它们通过的
--ws-error-highlight=
选项 以逗号分隔的
上下文
列表,用于指定 要突出显示空白错误的行

委员会:

--ws错误突出显示=
color.diff.whitespace
指定的颜色突出显示
指定行上的空白错误
是一个逗号分隔的列表,包含
旧的
新的
上下文

如果未给出此选项,则仅突出显示
行中的空白错误

例如,
--ws error highlight=new,old
突出显示删除和添加行上的空白错误。
all
可用作
旧、新上下文的简写

例如,旧提交有一个空格错误(
bbb
),但您可以只关注新错误(在
的末尾仍然是bbb
ccc
):

(测试完成后)


在Git 2.26(2020年第1季度)中,子命令的
diff-*
管道系列现在关注
diff.wsErrorHighlight
配置,该配置以前被忽略;这允许“
git add-p
”也向最终用户显示空白问题

参见(2020年1月31日)作者。
(于2020年2月14日合并)

:将diff.wsErrorHighlight移至“基本”配置 签字人:杰夫·金

我们在git_diff_ui_config()
中解析diff.wsErrorHighlight,这意味着它对管道命令无效,只对像它自己这样的瓷器有效。
这有点恼人,因为这意味着像
add--interactive
这样的脚本会产生用户可见的颜色差异,不尊重该选项

我们可以教该脚本解析配置,并将其作为
--ws error highlight
传递给diff管道。但有一个更简单的解决方案

对于管道而言,尊重此选项应该是合理安全的,因为它仅在启用颜色时生效。任何解析彩色输出的人都必须处理这样一个事实:
color.diff.*
可能会改变他们看到的确切输出;这些选项自年创建以来一直是git_diff_basic_config()的一部分(添加一个“basic”diff-config回调,2008-01-04,git v1.5.4-rc3)

因此,我们可以将它移动到“基本”配置,它修复了
add--interactive
,以及同一条船上的任何其他脚本,伤害任何管道用户的风险非常低


因为以
TAB
i开头的行是
空格的开头。继续修补文件并将
选项卡
替换为
空格
。例如,在vim on line+上,从修补程序文件类型x中删除空格,而不是删除符号+并在eqiv上插入空格(CTRL),使其达到原始大小。

它对我有效:

git config apply.whitespace fix
每次提交使用前:

git add -up .

查看git show的提交
——如果你的git没有颜色,你会看到有问题的空格变成红色。此外, Git show——Word DIFR 将不仅显示行的变化,而且插入行的中间,这应该显示补丁是否只在中间添加了一个单词,或者如果它还添加了尾随空白。你不需要关心。但是你应该。应该删除尾随空格。除了OP没有添加新的尾随空格外,它只修改已经存在的内容
git add -up .