【问题标题】:Git ignoring icon files because of Icon? ruleGit因为Icon而忽略图标文件?规则
【发布时间】:2018-10-19 01:45:01
【问题描述】:

我有一个包含 icons/ 目录中的 SVG 图像的存储库。尝试将这些图像添加到存储库失败,Git 抱怨错误消息:

The following paths are ignored by one of your .gitignore files:
public/img/icons/my-icon.svg
Use -f if you really want to add them.

当我使用git-check-ignore 跟踪被忽略的文件时,我发现我的.gitignore_global 文件中的Icon? 规则是罪魁祸首。

$ git check-ignore -v public/img/icons/my-icon.svg 
/Users/ryanatallah/.gitignore_global:42:Icon?   public/img/icons/my-icon.svg

什么是解决这个问题的优雅方法?

【问题讨论】:

  • 你为什么不简单地从 .gitignore_global 中删除行 Icon? 或者修改它以只匹配你想要忽略的内容?
  • 因为我仍然希望 Git 忽略 Icon? 文件。
  • 当你说你想忽略 icon 文件时,是否有另一种模式可以代替 Icon ?例如 - *.ico
  • 请编辑您的问题并告诉我们您希望忽略哪些文件。只有名为 Icon1、Icon2... 的文件?所有以 Icon 开头的东西?
  • 我不确定我理解为什么那条线是罪魁祸首。它应该匹配 my-icon.svgIcon?... 并且不应该匹配。这对我来说似乎很奇怪。也许检查忽略功能不正常。您的.gitignore_global 中有*.svg 规则吗?

标签: git gitignore


【解决方案1】:

原来这个问题是由Git bug 引起的,其中Icon? gitignore 规则也匹配icons/ 等目录。解决方案是在最后编写带有正确控制字符(即回车符)的规则。 This question 解释说,Icon? 文件是自动为带有自定义图标的目录创建的。

this blogpost 中记录的解决方案是使用回车将规则正确写入我的全局 gitignore 文件。以下 Ruby 脚本可以解决问题:

>> f = File.open(".gitignore", "a+") # append
=> #<File:.gitignore>
>> f.write("Icon\r\r")
=> 8
>> f.close
=> nil 

【讨论】:

  • 谢谢!我和我的同事在这个上拉了半个小时的头发。
  • OS X:我尝试在使用此技术后向.gitignore 添加另一行,但它与同一行上的Icon 混合在一起。我通过删除Icon 条目并再次添加它绕过了这个问题,这次只使用f.write("Icon\r\r\n")。之后,我可以添加另一个条目 (echo "file_to_ignore" &gt;&gt; .gitignore)。
  • f.write("Icon[\r]\n") 似乎更可取。请参阅here 了解原因。它还可以防止 Arnaud 的问题。
【解决方案2】:

要覆盖父 .gitignore 文件中的规则,您需要使用 ! 前缀,例如添加本地 .gitignore 文件:

!Icon

【讨论】:

    猜你喜欢
    • 2022-12-15
    • 2021-12-21
    • 2011-12-23
    • 2015-11-30
    • 2016-04-09
    • 2016-02-03
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多