在尝试使用git设置dropbox文件夹时,我看到了一个"Icon\r"文件,它不是由我创建的.我试着在〜/ .gitignore文件中忽略它.但添加Icon\r Icon\r\r Icon?根本不起作用.
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转换.
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)
小智 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)
关于命名(和引用)事物:首先,知道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 补丁,请务必阅读 第一的。)
参考
否则,Git 将模式视为 shell glob:“*”匹配除“/”、“?”之外的任何内容。匹配除“/”和“[]”之外的任意一个字符,匹配选定范围内的一个字符。有关更详细的说明,请参阅 fnmatch(3) 和 FNM_PATHNAME 标志。
有关 .gitignore 文件中方括号语法和否定语法的良好示例,请参阅这篇 linuxize.com 文章。
对于那些想要深入了解 Git 源代码中模式匹配如何随时间变化的人,您可以在 GitHub 上的 git 存储库中运行此搜索fnmatch。
| 归档时间: |
|
| 查看次数: |
10255 次 |
| 最近记录: |