我在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生成器创建一个Yeoman Web应用程序(" yo angular")并从{{1}中删除node_modules
文件。然后重复上述Git命令。
我在这里缺少什么?
答案 0 :(得分:967)
您应该可以运行命令
git config --system core.longpaths true
或手动将其添加到您的一个Git配置文件中,以便在支持的Git版本上启用此功能。看起来可能是1.9.0及之后。
答案 1 :(得分:385)
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/en-us/windows/desktop/fileio/naming-a-file上的Windows文档提供了更多信息:
从Windows 10版本1607开始,已经有MAX_PATH限制 从常见的Win32文件和目录函数中删除。但是,你 必须选择加入新行为。
注册表项允许您启用或禁用新的长路径 行为。要启用长路径行为,请将注册表项设置为 HKLM \ SYSTEM \ CurrentControlSet \ Control \ FileSystem LongPathsEnabled (类型:REG_DWORD)
答案 2 :(得分:169)
这可能会有所帮助:
git config core.longpaths true
基本解释:这个答案建议不要将此类设置应用于全局系统(对于所有项目,以避免--system
或--global
标记)配置。此命令仅通过特定于当前项目来解决问题。
答案 3 :(得分:58)
创建.gitconfig并添加
[core]
longpaths = true
您可以在项目位置(不确定)以及全局位置创建文件。在我的情况下,位置是C:\Users\{name}\
。
答案 4 :(得分:33)
更好的解决方案是从Git中启用longpath参数。
git config --system core.longpaths true
但是一个有效的解决方法是从Git中删除node_modules文件夹:
$ git rm -r --cached node_modules
$ vi .gitignore
在.gitignore文件中的新行中添加node_modules。完成后,推动您的修改:
$ git add .gitignore
$ git commit -m "node_modules removed"
$ git push
答案 5 :(得分:25)
要完全确定它在初始化存储库后立即生效,但在获取远程历史记录或检出任何文件之前,以这种方式使用它会更安全:
git clone -c core.longpaths=true <repo-url>
-c key = value
在新创建的存储库中设置配置变量;这在初始化存储库后立即生效,但是 在获取远程历史记录或检出任何文件之前。钥匙 格式与git-config 1的格式相同(例如, core.eol =真)。如果为同一个键给出了多个值,则每个值 value将写入配置文件。这使得它安全 例如,将其他fetch refspec添加到原始远程。
答案 6 :(得分:7)
您也可以尝试启用长文件路径。
如果运行Windows 10家庭版,则可以更改注册表以启用长路径。
转到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
中的regedit
,然后将LongPathsEnabled
设置为1
。
如果您使用Windows 10 Pro或Enterprise,则还可以使用本地组策略。
转到gpedit.msc
中的计算机配置→管理模板→系统→文件系统,打开启用Win32长路径并将其设置为 Enabled 。
答案 7 :(得分:6)
执行git config --system core.longpaths true
向我抛出错误:
“错误:无法锁定配置文件C:\ Program Files (x86)\ Git \ mingw32 / etc / gitconfig:权限被拒绝“
在全局级别执行命令已解决:
git config --global core.longpaths true
答案 8 :(得分:4)
您可以尝试暂时将本地存储库(整个文件夹)移动到驱动器的根目录或尽可能靠近根目录。
由于驱动器根路径较小,因此有时可以解决问题。
在Windows上,我将其移至C:\
或其他驱动器的根目录。
答案 9 :(得分:2)
我也有这个错误,但在我的情况下,原因是使用了过时版本的npm,v1.4.28。
更新到npm v3后跟
rm -rf node_modules
npm -i
为我工作。 npm issue 2697详细介绍了&#34;最平坦的&#34;文件夹结构包含在npm v3中(2015-06-25发布)。
答案 10 :(得分:2)
git config --global core.longpaths true
以上命令对我有用。使用'--system'给我配置文件未锁定错误
答案 11 :(得分:2)
以管理员身份运行命令提示符,然后在命令下方运行
git config --system core.longpaths true
答案 12 :(得分:1)
如果您正在使用加密分区,请考虑将文件夹移动到未加密的分区,例如 / tmp ,运行git pull
,然后再移回。
答案 13 :(得分:0)
在Windows中,您可以按照以下对我有用的步骤进行操作。
git config --system core.longpaths true
这将允许全局访问长路径
现在您可以克隆存储库,并且路径较长没有问题
答案 14 :(得分:0)