10

该文件夹由具有文件名的文件组成,如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

我做了一个试验和错误,我发现这个错误只有在波浪号后面跟着一个数字时才会存在。

如果该文件夹是第一次被 git 跟踪,那么其他文件也不会被 Git 跟踪。

$ git clean --dry-run
Would remove Rest.png
Would remove abc~1.png

请帮助我如何解决这个问题。

4

1 回答 1

17

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

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

由于这种映射是不可预测的,因此我们需要在 Windows 上禁止此类文件名,同时我们还要排除其他与 Windows 文件系统不兼容的文件名(例如 NUL、CON 等)。

我们使用之前提交中引入的 core.protectNTFS 保护来确保我们仅在适当的时候阻止此类文件名。

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

git config core.protectNTFS false

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

git config core.protectNTFS true

仅当您需要添加名称中带有波浪线的文件或检出包含此类文件名的分支时,才禁用此保护。

一般来说,如果在 Windows 环境中工作,我建议避免使用此类文件名。

于 2015-03-27T12:10:36.603 回答