Git 仅忽略 Markdown 文件中的尾随空格

Posted

技术标签:

【中文标题】Git 仅忽略 Markdown 文件中的尾随空格【英文标题】:Git ignore trailing whitespace in markdown files only 【发布时间】:2017-02-06 18:00:30 【问题描述】:

我有一个降价文件,其中的行带有尾随空格(这是正确的,应该提交)。我无法使用 git add -p 将这些更改添加到索引中,因为 git 抱怨尾随空格。如果我使用 git add -A,它们会被正确添加,但我希望它与 git add -p 一起使用。

我在我的~/.gitconfig:

[core]
  whitespace = trailing-space,space-before-tab

这一直运行良好,因为在大多数情况下我确实想警告尾随空格(它在 html、JS 和 Ruby 文件中不正确)。

如何仅忽略 Markdown 文件中的尾随空格?

【问题讨论】:

【参考方案1】:

.gitattributes 文件中添加以下内容:

**/*.md  -whitespace

https://git-scm.com/docs/gitattributes#_checking_whitespace_errors

更具体地说,您可以改为执行以下操作:

**/*.md  whitespace=space-before-tab

(为降价文件删除trailing-space。)

以与 .gitignore 相同的方式处理 .gitattributes 并将其签入 repo。

【讨论】:

**/* 是什么意思? -whitespace 表示“取消设置 whitespace 属性”。【参考方案2】:

.gitattributes中使用这个:

**/*.md text whitespace=-cr-at-eol,-trailing-space

**/*.md whitespace=space-before-tab 不起作用。在cmd.exe 试试这个:

$ git config --show-origin --get core.whitespace
file:C:/Users/kevin/.gitconfig  trailing-space,space-before-tab,cr-at-eol

$ git init .
Initialized empty Git repository in trailing/.git/

$ cat > README.md
Trailing space here:
check it

$ git add README.md

$ git diff-index --check --cached 4b825dc642cb6eb9a060e54bf8d69288fbee4904
README.md:1: trailing whitespace.
+Trailing space here: 

$ echo **/*.md  -whitespace > .gitattributes

$ git check-attr --all -- README.md
README.md: whitespace: unset

$ git diff-index --check --cached 4b825dc642cb6eb9a060e54bf8d69288fbee4904

$ echo **/*.md  whitespace=space-before-tab > .gitattributes

$ git check-attr --all -- README.md
README.md: whitespace: space-before-tab

$ git diff-index --check --cached 4b825dc642cb6eb9a060e54bf8d69288fbee4904
README.md:1: trailing whitespace.
+Trailing space here:

$ echo **/*.md text whitespace=-cr-at-eol,-trailing-space > .gitattributes

$ git diff-index --check --cached 4b825dc642cb6eb9a060e54bf8d69288fbee4904

【讨论】:

以上是关于Git 仅忽略 Markdown 文件中的尾随空格的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studio 中自动删除尾随空格?

我们可以阻止 SQL Server 除了忽略值中的尾随空格吗

如何自动删除vim中的尾随空格

如何使用 SkiaSharp 测量尾随空格?

仅添加非空白更改

Git diff -w 仅在行首和行尾忽略空格