无法添加名称中包含波浪号的文件,"〜"后跟一个数字

Sab*_*hSS 9 git indexing msysgit tilde

该文件夹包含有类似的文件名的文件abc~1,123~1,a1d2~3.

当我这样做git add --all时说,

$ git add --all
error: Invalid path 'abc~1.png'
error: unable to add abc~1.png to index
fatal: adding files failed
Run Code Online (Sandbox Code Playgroud)

我做了一次试验和错误,我发现只有当波形符号后跟一个数字时,这个错误仍然存​​在.

如果第一次通过git跟踪文件夹,Git也不会跟踪其他文件.

$ git clean --dry-run
Would remove Rest.png
Would remove abc~1.png
Run Code Online (Sandbox Code Playgroud)

请帮助我如何解决此问题.

Ant*_*ica 15

这是2014年12月对msys Git 进行更改的结果.

在Windows的默认文件系统FAT和NTFS上,支持DOS样式的8.3文件名以实现向后兼容.这意味着有多种方法可以引用同一个文件.例如,文件凭证 - 缓存 - daemon.c也可以通过CREDEN~1.C访问(除非另一个文件已经映射到所谓的"短名称",即确切的短名称是不可预测的).

由于这种映射是不可预测的,我们需要在Windows上禁止这样的文件名,而在此期间,我们还排除了与Windows文件系统不兼容的其他文件名(例如NUL,CON等).

我们使用前一次提交中引入的core.protectNTFS保护,以确保我们仅在适当时阻止此类文件名.

要禁用此行为,您可以运行:

git config core.protectNTFS false
Run Code Online (Sandbox Code Playgroud)

但是,由于新行为可以保护您,我建议您在添加文件后将其更改回来:

git config core.protectNTFS true
Run Code Online (Sandbox Code Playgroud)

仅在需要在名称中添加带有波浪号的文件时才禁用此保护,或者检出包含此类文件名的分支.

一般情况下,如果在Windows环境中工作,我建议避免使用此类文件名.