什么是“1行添加空白错误”是什么意思,当应用补丁?

我正在编辑一个克隆的远程仓库的一些markdown文件,并且想要testing从一个分支到另一个分支的创build和应用补丁。 但是,每次我进行任何更改时,都会在git apply收到以下消息:

 0001-b.patch:16: trailing whitespace. warning: 1 line adds whitespace errors. 

(这是发生在我的Mac上,我不知道原始代码的创build位置。)

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

你不需要关心。

这个警告提供了一个关于空白的文本文件的清洁标准,这是许多程序员倾向于关心的东西。 正如手册所述 :

什么是空白错误是由core.whitespaceconfiguration控制的。 默认情况下,尾随空格(包括单独由空格组成的行)和空格字符紧跟在行的初始缩进内的制表符后面将被视为空格错误。

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

所以,“错误”意味着更改引入了一个尾随空白,一个只有空白的行,或一个选项卡之前的空格。 除了这个事实之外,这个变化没有什么错误,而且它会清楚而正确地应用。 换句话说,如果你不关心“不正确”的空白,可以随意忽略这个警告,或者用git config apply.whitespace nowarn把它关掉。

一种情况是,当你想要区分“旧”whitespase错误(你可能想要保留的遗留原因)和“新”空白错误(你想避免)时,你可以合理关心。

为此,Git 2.5+(Q2 2015)将为空白检测提出更具体的选项。

参见提交0e383e1,0ad782f和d55ef3e [2015年5月26日] Junio C gitstergitster ) 。
(由Junio合并于2015年6月11日承诺709cd91 )

diff.c :– --ws-error-highlight=<kind>选项

传统上,我们只关心新行中引入的空白破坏。
有些人也想在旧线上画空白破损。 当他们在一个新的行中看到一个空白时,他们可以在相应的旧行上发现同样types的空白破坏,并且想要说:“啊,那些破坏在那里,但是它们是从原来inheritance的,所以我们不要碰它们现在。”

引入--ws-error-highlight=<kind>选项,让它们传递oldnewcontext的逗号分隔列表,以指定在哪些行上突出显示空白错误。

该文档现在包括 :

 --ws-error-highlight=<kind> 

在由color.diff.whitespace指定的颜色中<kind> color.diff.whitespace <kind>指定的行上突出显示空白错误。
<kind>oldnewcontext的逗号分隔列表。
当没有给出这个选项时,只会突出显示new行中的空格错误。

例如--ws-error-highlight=new,old高亮显示删除和添加行上的空格错误。
all都可以作为old,new,context的短手。

例如,旧的提交有一个空白错误( bbb ),但是你可以只关注新的错误( still bbbccc ):

旧的和新的shitespace错误

(在t/t4015-diff-whitespace.sh之后完成testing)

因为用TAB开始的行是SPACE 。 去补丁文件并用SPACEreplaceTAB 。 例如,在vim中,从修补程序文件typesx的行+删除空间,并不删除sign +并将eqiv上的空格(CTRL)删除到原始大小。