我正在使用Git-1.9.0-preview20140217Windows。据我所知,此版本应该解决文件名过长的问题。但不适合我。
Git-1.9.0-preview20140217
我肯定做错了什么:我做了git config core.longpaths trueand git add .then git commit。一切顺利。但是当我现在做 a 时git status,我会得到一个带有 的文件列表Filename too long,例如:
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”)创建一个Yeomannode_modules Web 应用程序并从.gitignore文件中删除。然后重复上述 Git 命令。
node_modules
.gitignore
我在这里想念什么?
Git 的文件名限制为 4096 个字符,但在 Windows 上使用 msys 编译 Git 时除外。它使用旧版本的 Windows API,并且文件名限制为 260 个字符。
据我了解,这是 msys 的限制,而不是 Git 的限制。您可以在此处阅读详细信息: https ://github.com/msysgit/git/pull/110
您可以通过在 Windows 上使用另一个 Git 客户端或按照其他答案中的说明设置core.longpaths为来规避此问题。true
core.longpaths
true
git config --system core.longpaths true
Git 是作为脚本和编译代码的组合构建的。通过上述更改,某些脚本可能会失败。这就是默认情况下不启用 core.longpaths 的原因。
https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path- limitation?tabs=cmd#enable-long-paths-in- windows-10-version-上的 Windows 文档1607 及更高版本有更多信息:
从 Windows 10 版本 1607 开始,MAX_PATH 限制已从常见的 Win32 文件和目录函数中删除。但是,您必须选择加入新行为。 注册表项允许您启用或禁用新的长路径行为。要启用长路径行为,请在 HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled 处设置注册表项(类型:REG_DWORD)
从 Windows 10 版本 1607 开始,MAX_PATH 限制已从常见的 Win32 文件和目录函数中删除。但是,您必须选择加入新行为。
注册表项允许您启用或禁用新的长路径行为。要启用长路径行为,请在 HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled 处设置注册表项(类型:REG_DWORD)