116

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

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

(这发生在我的 Mac 上,我不知道原始代码是在哪里创建的。)

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

4

5 回答 5

139

你不需要关心。

该警告制定了关于空白的文本文件清洁度标准,这是许多程序员倾向于关心的事情。正如手册所解释的:

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

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

因此,“错误”意味着更改引入了尾随空格、仅空格行或制表符之前的空格。除此之外,更改没有任何错误,它将干净而正确地应用。换句话说,如果您不关心“不正确”的空格,请随意忽略警告或使用git config apply.whitespace nowarn.

于 2012-09-12T22:06:05.983 回答
6

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

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

请参阅Junio C Hamano ( )的提交 0e383e1、0ad782fd55ef3e [ 2015年5 月 26 日] 。(由Junio提交 709cd91中合并,2015 年 6 月 11 日)gitster

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

传统上,我们只关心新行中引入的空白中断。
有些人也想在旧行上绘制空白中断。当他们在新行上看到空白中断时,他们可以在相应的旧行上发现相同类型的空白中断并想说“啊,那些中断在那里但是它们是从原始行继承的,所以我们不要碰它们现在。”

引入--ws-error-highlight=<kind>选项,允许他们传递逗号分隔的 , 列表oldnewcontext指定要突出显示空白错误的行。

文档现在包括

--ws-error-highlight=<kind>

<kind>以 指定的颜色突出显示 指定的行上的空白错误color.diff.whitespace
<kind>old, new,的逗号分隔列表context
如果未给出此选项,则仅new突出显示行中的空白错误。

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

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

新旧shitespace错误

(测试完成后t/t4015-diff-whitespace.sh


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

请参阅Jeff King ( ) 的提交 da80635(2020 年 1 月 31 日(由Junio C Hamano 合并 -- --df04a31 提交中,2020 年 2 月 14 日)peff
gitster

diff: 将 diff.wsErrorHighlight 移至“基本”配置

签字人:杰夫·金

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

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

管道尊重此选项应该是相当安全的,因为它仅在启用颜色时才会启动。color.diff.*任何解析彩色输出的人都必须已经处理可能改变他们看到的确切输出的事实;自9a1805a872git_diff_basic_config()开始以来,这些选项一直是其中的一部分(添加“基本”差异配置回调,2008-01-04,Git v1.5.4-rc3)。

因此,我们可以将其移至“基本”配置,该配置add--interactive与同一条船上的任何其他脚本一起修复,并且伤害任何管道用户的风险非常低。

于 2015-06-12T13:15:00.297 回答
1

此处显示了视觉图像的空白错误。

http://git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project#Commit-Guidelines

于 2015-01-07T12:21:46.750 回答
0

这个对我有用 :

git config apply.whitespace fix

在每次提交之前使用:

git add -up .
于 2020-12-08T10:32:58.980 回答
-2

因为以TABi 而不是 开头的行SPACE。继续补丁文件并替换TABSPACE. 例如,在 vim 上的行 + 从补丁文件类型 x 删除空格而不删除符号 + 并在 eqiv 上插入空格 (CTRL) 到原始大小。

于 2015-08-11T08:56:23.183 回答