Macos 移除怪异的';Iconr&x27;存储库中的文件
在我的git存储库中,我在暂存区有一个奇怪的文件,它拒绝被恢复、删除和提交——基本上我无法让它消失 该文件必须是某个古老的OS9文件,在文件夹中存放多年 几天前,我已经删除了文件系统中的文件,所以现在git正在跟踪对Macos 移除怪异的';Iconr&x27;存储库中的文件,macos,git,atlassian-sourcetree,Macos,Git,Atlassian Sourcetree,在我的git存储库中,我在暂存区有一个奇怪的文件,它拒绝被恢复、删除和提交——基本上我无法让它消失 该文件必须是某个古老的OS9文件,在文件夹中存放多年 几天前,我已经删除了文件系统中的文件,所以现在git正在跟踪对Iconr的删除 然而,它被卡在那里了 我通过SourceTree(我的git UI客户端)得到的错误是 致命:pathspec“文件夹/Iconr”与任何文件都不匹配 你知道如何让git完全忘记该文件吗?为了得到更准确的错误消息,最好返回到命令行 在那里,您可以尝试执行git ad
Iconr
的删除
然而,它被卡在那里了
我通过SourceTree(我的git UI客户端)得到的错误是
致命:pathspec“文件夹/Iconr”与任何文件都不匹配
你知道如何让git完全忘记该文件吗?为了得到更准确的错误消息,最好返回到命令行 在那里,您可以尝试执行
git add-u
,然后执行git commit
,以便在repo中注册删除该文件。以“”为例 您还可以预览git clean将提供什么:
git clean-d-x-n
(如“”中所述)
另一个问题是,在当前分支中根本不跟踪该文件,而是在另一个分支中跟踪该文件。查看以检查是否是这种情况。作为一般解决方法,可以编辑
.gitignore
文件以完全忽略图标\r
文件,如本博客中所述:添加一行
Icon?
对,我为他工作
图标^M类文件很可能是由一些外部应用程序创建的,例如突出显示文件夹的应用程序 您应该删除正在执行此操作的应用程序,或者在
.gitignore
文件中忽略它,例如
printf "Icon\r\r" >> .gitignore
这是一个shell命令。或者将其添加为图标???
,或者您可以通过Control-V并按Enter键复制^M
特殊字符
相关的:
如果不想将此更改提交到存储库中,也可以将其添加到全局.gitignore
或添加到.git/info/exclude
中
请参阅:
要自行删除文件,请尝试:
find . -type f -name 'Icon?' -print -delete
或者,如果它们是唯一未老化的,请运行:git clean-f
在SourceTree中显示为“Iconr”的实际上是图标\r
,其中\r
是十六进制值0x0d
与POSIX正则表达式相比,.gitignore文件名模式匹配受到限制。诸如Icon\r
和Icon\x0d
之类的正则表达式模式在SourceTree中不适用
简单忽略:在.gitignore文件中添加图标?
模式将使SourceTree中的“Iconr”文件被忽略
注意:图标?
使用?
这是一个单字符通配符。因此,像Icon\r
、“icona”、“icon3”和“Icons”这样的文件和文件夹将以Icon?
模式忽略。如果需要,可以使用文件名“Icon01”、“icon02”、“iconaa”而不是“Icon1”、“icon2”、“icona”,通过此解决方法将此类文件添加到git
精确忽略:可以使用binhex编辑器忽略精确的图标\r
文件名
在binhex编辑器中,在.gitignore文件中添加0a 49 63 6f 6e 0d 0d 0a
。额外的0a
s是换行符,用于括起图标\r\r
,以便以后编辑其他unix文件
警告:如果使用精确值49 63 6f 6e 0d
,请小心不要将\r
替换为\n
。换句话说,不要在设置为使用此方法自动替换行分隔符的文本编辑器中编辑.gitignore
注意:简单忽略图标?
对于大多数用例来说是方便和足够的。退出并重新启动SourceTree以查看更改是否生效。默认情况下,macOS的git不区分大小写
自定义文件夹/文件图标:每次将自定义图标添加到文件夹或文件时,都会创建一个图标\r
文件。例如,可以通过“获取信息”窗口添加自定义图标。以下是默认系统文件夹图标已替换为自定义文件夹图标的示例:
图标\r
文件可以通过文件/文件夹的“获取信息”窗口手动删除,或者调用shell命令删除图标\r
文件,如kenorb的回答中所述。您可以使用通配符忽略任何级别的子文件夹上的图标?
:
// .gitignore
**/Icon?
通配符从git的1.8.2版开始工作文件名可能真正被称为
图标\r
-可能UI客户端没有正确显示它。尾随换行符可以使各种工具跳闸,但在从命令调用时应由git处理line@cacau事实上,在命令行上它说“Icon\r”参见放大:将“Icon”添加到.gitignore会导致忽略“Icon\r”。自从是单字符通配符,则Iconx、Icon1等名称也将被忽略。但是,“图标”很容易使用任何文本编辑器应用。。。并且对于许多用例来说已经足够了。将“Icon?”添加到。gitignore对我有用。“Icon”或“Iconr”或“Icon\r”没有。这是一个比公认答案更好的答案。Icon\r和其他几个变体是OSX填充到目录中的文件,表示自定义文件夹图标。有很多类似的变体,都有一个额外的字符,但这个答案涵盖了所有的变体。一个问号对我来说很有用-键入f-name“Icon?”-print-delete您不需要在此处进行全局搜索。如果删除前导的/
,它将被递归搜索。