当前位置: 首页 > 知识库问答 >
问题:

Git for Windows中的文件名太长

辛渝
2023-03-14

我正在使用GIT-1.9.0-Preview20140217for Windows。据我所知,这个版本应该会解决文件名太长的问题。但对我来说不是。

当然,我做错了什么:我做了git config core.longpaths truegit add.,然后做了git commit。一切顺利。但是,当我现在执行Git status时,我会得到一个文件列表,其中文件名too longfilename 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 generator(“yo Angular”)创建一个Yeoman web应用程序,并从.gitignore文件中删除node_modules。然后重复前面提到的Git命令。

我错过了什么?

共有1个答案

袁秦迟
2023-03-14

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)处设置注册表项

 类似资料:
  • 我试图运行的命令 字符串的长度为4260

  • Jenkins中的Git签出抛出错误“文件名太长”并失败,如下所示: hudson.plugins.git.gitException:命令“git.exe checkout-F 2CEA7D8EB9185899C01D2FFC86872F584DA2E60C”返回状态代码1: stdout: stderr:错误:无法创建文件some_long_named_project/src/test/reso

  • 在将添加到构建中并从junit4迁移所有内容后,Gradle开始出现以下错误。 在老式运行器中所有运行都很好,但junit5测试不是。 我很好奇我是否可以在项目评估后删除这个配置,因为无论如何都添加了所有JUnit依赖项来编译代码,然后插件只是在顶部添加负载。我创建了一个项目,将所有Junit5库封装在一个人工制品中。 编辑3 我确实设法将所有木星人工制品打包到1中,以稍微缩小cp,但我的类路径仍

  • 问题内容: 我知道这个问题以前曾被问过,但是我无法使用其他帖子中的解决方案来解决。我正在尝试使用Maven编译gwt项目的复杂层次结构。一切正常,直到我不得不再添加一个库,更具体地说:org.eclipse.birt.runtime 现在我得到这个错误: 我正在使用的依赖项是: 问题答案: 我终于设法解决了: 事实证明birt及其依赖项只是添加了太多的库,而classpath变得对于Windows

  • Jenkins中的Git checkout抛出错误“filename too long”并失败,如下所示: hudson.plugins.git.gitException:命令“git.exe checkout-f 2CEA7D8EB9185899C01D2FFC86872F584DA2E60C”返回状态代码1: stdout: stderr:错误:无法创建文件some_long_named_pr

  • 问题内容: 我写了一种测试套件,它占用大量文件。一段时间(2h)之后,我得到了。我仔细检查了所有文件句柄是否再次关闭它们。但是错误仍然存​​在。 我试图找出使用允许的文件描述符的数量以及当前打开的文件描述符的数量: 因此,如果我运行以下测试: 我得到以下输出: 真奇怪,我期望打开的文件描述符会越来越多。我的脚本正确吗? 我正在使用python的记录器和子进程。那可能是我FD泄漏的原因吗? 谢谢,丹