【问题标题】:Ignore whitespace for only certain file extensions when merging合并时仅忽略某些文件扩展名的空格
【发布时间】:2018-03-07 02:52:52
【问题描述】:

我有这个命令

git merge -Xignore-all-space origin/dev

让我有点害怕 b/c 我害怕合并一个空格很重要的文件。有没有办法将其限制为某些文件,如下所示:

git merge -Xignore-all-space *.js origin/dev

【问题讨论】:

  • 如果问题不清楚,空格对于某些语言很重要,但对于其他语言则不重要。我只想忽略空格不那么重要的语言的空格更改。

标签: javascript node.js git git-merge


【解决方案1】:

任何时候您想为每个文件扩展名设置一个配置,一个好的起点是gitattributes
.gitattributes 文件中,您可以为每个文件或每个文件扩展名设置一个指令。

但是,我 mentioned in 2009 的 *.js 空白可能在合并期间不适用。

由于ignore-all-space 首先是git diff option,您可能需要在.gitattributes 中设置diff driver(同样,仅适用于*.js 文件),模拟--word-diff-regex

使用<regex> 来决定一个词是什么,而不是将非空白的运行视为一个词

每个不重叠的匹配都被视为一个单词。这些匹配之间的任何内容都被视为空格并被忽略(!),以便发现差异。

您可能希望将|[^[:space:]] 附加到您的正则表达式中,以确保它匹配所有非空白字符。包含换行符的匹配项在换行符处被静默截断(!)。

例如(进行调整以匹配您在 javascript 文件中对不带空格的差异所需的内容)

*.js    diff=js
[diff "js"]
    wordRegex = "[^[:space:]]+"

【讨论】:

  • 谢谢,你能完整地展示一下命令行中的git 命令的完整外观吗?
  • @AlexanderMills 在 *.js 文件所在的文件夹中直接编辑 .gitattributes 文件更简单。然后测试一个合并(不完成它),看看是否忽略了纯空格冲突。
猜你喜欢
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
相关资源
最近更新 更多