我正在 Windows 上Git-1.9.0-preview20140217
据我所知,此版本应解决文件名过长的问题。但是不适合我。
当然我做错了:我做了git config core.longpaths true
和git add .
然后git commit
。一切顺利。但是当我现在执行git status
,我得到了Filename too long
的文件列表,例如:
node_modules/grunt-contrib-imagemin/node_modules/pngquant-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js: Filename too long
对我来说,复制非常简单:只需使用 Angular 生成器(“yo angular”)创建 Yeoman node_modules
从.gitignore
文件中删除 node_modules。然后重复上述 Git 命令。
我在这里想念什么?
您应该能够运行命令
git config --system core.longpaths true
或在受支持的 Git 版本上手动将其添加到您的 Git 配置文件之一中,以启用此功能。看起来可能是 1.9.0 及更高版本。
Git 的文件名限制为 4096 个字符,但在 Windows 上使用 msys 编译 Git 时除外。它使用 Windows API 的较旧版本,文件名限制为 260 个字符。
据我了解,这是对 msys 的限制,而不是对 Git 的限制。您可以在此处阅读详细信息: https://github.com/msysgit/git/pull/110
您可以通过在 Windows 上使用其他 Git 客户端来规避此问题,或将core.longpaths
设置为true
如其他答案所述。
git config --system core.longpaths true
Git 是脚本和已编译代码的组合。通过上述更改,某些脚本可能会失败。这就是默认情况下不启用 core.longpaths 的原因。
https://docs.microsoft.com/zh-cn/windows/desktop/fileio/naming-a-file上的 Windows 文档提供了更多信息:
从 Windows 10 版本 1607 开始,MAX_PATH 限制已从常见的 Win32 文件和目录功能中删除。但是,您必须选择加入新行为。
注册表项允许您启用或禁用新的长路径行为。若要启用长路径行为,请将注册表项设置为 HKLM \ SYSTEM \ CurrentControlSet \ Control \ FileSystem LongPathsEnabled(类型:REG_DWORD)
这可能会有所帮助:
git config core.longpaths true
基本说明:此答案建议不要将此设置应用于全局系统(应用于所有项目,从而避免使用--system
或--global
标记)配置。此命令仅通过特定于当前项目来解决问题。
编辑:
对于那些未获准全局更改 git 设置的人来说,这是与 “permission 否认” 问题相关的重要答案。