如何忽略Icon?在git

tai*_*nsu 41 git macos

在尝试使用git设置dropbox文件夹时,我看到了一个"Icon\r"文件,它不是由我创建的.我试着在〜/ .gitignore文件中忽略它.但添加Icon\r Icon\r\r Icon?根本不起作用.

Dha*_*rma 57

你也可以使用vim.

  1. vim .gitignore
  2. Icon然后在一个新行写
  3. ctrl+ v,然后按Enter
  4. 重复步骤3
  5. 保存并退出(快捷键:ZZ)

现在你应该已经Icon^M^M完成了:)

为了更智能地使用,您可以将其添加到您的gitignore全局配置文件中~/.gitignore_global.

  • 不知道你是否需要第4步?`$ 找到 . -name "Icon^M^M"` 什么也没给出,但 `$ find 。-name "Icon^M"` 给出 `./Icon`。gitignore 有什么不同吗? (2认同)

hid*_*idn 28

"Icon[\r]"可能是一个更好的选择.
在vim,你只要把Icon[^M],这是Icon[其次CtrlV,Enter然后].

问题"Icon\r\r"是EOL转换.

实际上整条线都是"Icon\r\r\n"计数线的结束.根据您的设置,CRLF可能会转换为LF提交,因此您的回购将实际拥有"Icon\r\n".假设您将更改同步到另一个仓库.你将进入"Icon\r\n"那个工作目录,忽略Icon但不是Icon^M.如果你进一步编辑.gitignore并提交它,你将最终"Icon\n"- 完全失败\r.

我在一个项目中遇到过这种情况,其中一些在OS X上开发而一些在Windows上开发.通过使用括号分隔\r和行结束,我不必重复\r两次,我不担心EOL转换.

  • 对于 TextMate 用户:输入 `Icon[`,点击 `⌃`+`⌥`+Enter,输入 `]` (2认同)

eld*_*des 23

图标?是OS X文件夹图标的文件."?" 是双回车(\ r \n)的特殊字符.

打开终端并导航到您的存储库文件夹,然后键入:

printf "Icon\r\r" > .gitignore
Run Code Online (Sandbox Code Playgroud)

或者,如果.gitignore文件存在且不为空:

printf "Icon\r\r" >> .gitignore
Run Code Online (Sandbox Code Playgroud)

  • `?`代表_single_回车.正如hidn的[回答](/sf/answers/2378181991/)所解释的那样,双重"\ r\r \n"只能由于git将最后一个`\ r`作为`\ r \n'的一部分解释\n`EOL惯例,确实比"[\ r]"更糟糕. (4认同)
  • 结合这两个建议,您可以使用它来将规则的更安全版本添加到现有文件中:`printf "Icon[\r]" >> .gitignore` (4认同)
  • 比红宝石解决方案容易得多。 (3认同)

小智 17

最好的地方是在您的全局gitignore配置文件中.您可以创建此文件,访问它,然后按照以下步骤进行编辑:

>> git config --global core.excludesfile ~/.gitignore_global

>> vim ~/.gitignore_global

i进入插入模式

Icon在新行上键入

而在同一行上,ctrl+ v,enter,ctrl+ v,enter

esc,然后shift+ ;然后键入wq然后点击enter


tai*_*nsu 12

图标?是OSX文件夹图标的文件.事实证明,这\r实际上是CRLF.所以我使用ruby将行添加到.gitignore文件中.打开终端并导航到home文件夹,然后:

> irb
>> f = File.open(".gitignore", "a+") #<File:.gitignore>
>> f.write("Icon\r\r")  # output a integer
>> f.close
>> exit
Run Code Online (Sandbox Code Playgroud)


Dav*_* J. 7

关于命名(和引用)事物:首先,知道ANSI-C 引用可用于明确匹配 macOS 图标文件,将使更多人受益。双方Icon$'\r'$'Icon\r'在Bash和岩组和其他大多数现代炮弹的工作,我希望,如鱼。

保持你的 .gitignore 可编辑:虽然我对这里其他答案提供的字节级操作印象深刻,但这些方法在实践中很脆弱。简而言之,程序员倾向于使用文本编辑器,其中许多编辑器被配置为在保存文件时改变行尾。(例如,请参阅有关行结束规范化的 VS Code 讨论。)

你想让你的编辑器撤销你仔细的字节编辑吗?当然不是。因此,也许您会发现配置编辑器使其不影响行尾既实用又方便。您可能会查看 (a) 特定于编辑器的配置设置;或 (b) 跨编辑器配置(即EditorConfig)。

但这变得复杂和混乱。如果想要更简单、更灵活的方式,请在您的 .gitignore 文件中使用它:

# .gitignore
Icon?
![iI]con[_a-zA-Z0-9]
Run Code Online (Sandbox Code Playgroud)

图案说明:

  • 使用Icon?是因为 gitignore 格式不支持\r作为转义码。
  • 使用[iI]是因为 Git 可能区分大小写。
  • 使用[_a-zA-Z0-9]捕捉许多普通的ASCII字符; 你可能想扩大这一点。

您可以测试您的 gitignore 模式是否按预期工作:

# .gitignore
Icon?
![iI]con[_a-zA-Z0-9]
Run Code Online (Sandbox Code Playgroud)

例如,对于测试,将这些文件放在一个目录中:

-rw-r--r--@  Icon?
-rw-r--r--   icon8
drwxr-xr-x   icons
-rw-r--r--   iconography
Run Code Online (Sandbox Code Playgroud)

...的结果git check-ignore -v *是:

/Users/abc/.gitignore:3:Icon?   "Icon\r"
/Users/abc/.gitignore:4:![iI]con[_a-zA-Z0-9]    icon_
/Users/abc/.gitignore:4:![iI]con[_a-zA-Z0-9]    icons
Run Code Online (Sandbox Code Playgroud)

这就是你想要的。

长期建议如果 Git 支持\r.gitconfig 文件中的转义,则此问题将很容易解决。一个人可以简单地写:

# .gitignore
Icon[\r]
Run Code Online (Sandbox Code Playgroud)

所以我建议我们与Git 社区合作并努力实现这一目标。

(如果你确实想涉足并建议一个 Git 补丁,请务必阅读 第一的。)

参考

gitignore 文档

否则,Git 将模式视为 shell glob:“*”匹配除“/”、“?”之外的任何内容。匹配除“/”和“[]”之外的任意一个字符,匹配选定范围内的一个字符。有关更详细的说明,请参阅 fnmatch(3) 和 FNM_PATHNAME 标志。

有关 .gitignore 文件中方括号语法和否定语法的良好示例,请参阅这篇 linuxize.com 文章

对于那些想要深入了解 Git 源代码中模式匹配如何随时间变化的人,您可以在 GitHub 上的 git 存储库中运行此搜索fnmatch

  • 这个答案应该在顶部,接受的答案应该改为这个。如果您从命令行或使用文本编辑器(或仅使用后者)编辑 gitignore 文件,这确实是最好的。 (5认同)
  • 这个更坚固。 (2认同)