git中的文件名太长,

我为Windows使用Git-1.9.0-preview20140217 。 据我所知,这个版本应该修复太长的文件名的问题。 但不适合我

当然,我做错了什么:我做的git config core.longpaths truegit 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”)创build一个yeoman web应用程序,并从.gitignore文件中删除node_modules 。 然后重复上述的git命令。

我在这里错过了什么?

Git的文件名限制为4096个字符,当使用msys编译git的时候,窗口除外。 它使用较老版本的Windows API,并且文件名的最大长度为260个字符。

所以据我所知,这是msys的限制,而不是git。 您可以在这里阅读详细信息: https : //github.com/msysgit/git/pull/110

你可以通过在Windows上使用另一个git-client来绕开这个问题。

你应该可以运行这个命令

 git config --system core.longpaths true 

或者将其添加到您的某个gitconfiguration文件中,以便在您使用支持的git版本时启用此function。 它看起来可能是1.9.0和之后。

这可能有助于:

 git config core.longpaths true 

基本的解释:这个答案build议不要把这样的设置应用到全局系统(对所有避免使用–system或–global标签的项目)。 这个命令只能通过特定于当前项目来解决问题。

创build.gitconfig和添加

 [core] longpaths = true 

您可以在项目位置创build文件(不确定),也可以在全球位置在我的情况下位置是c:Users {name} \

更好的解决scheme是从git启用longpath参数。

 git config --system core.longpaths true 

但是工作的一个工作是从git中删除node_modules folter。

 $ git rm -r --cached node_modules $ vi .gitignore 

在.gitignore文件的新行中添加node_modules。 做完这个之后,推动你的修改。

 $ git add .gitignore $ git commit -m "node_modules removed" $ git push 

要完全确定在初始化存储库之后,在获取远程历史logging或检出任何文件之前立即生效,以这种方式使用它是比较安全的:

 git clone -c core.longpaths=true <repo-url> 

-c key =值

在新创build的存储库中设置configurationvariables; 这会在储存库初始化之后立即生效,但是在获取远程历史logging或检出任何文件之前。 密钥的格式与git-config 1的格式相同(例如,core.eol = true)。 如果同一个键有多个值,则每个值都将写入configuration文件。 例如,这样就可以安全地将其他提取参数添加到原始远程。

更多信息

我也有这个错误,但在我的情况下,原因是使用过时的版本npm,v1.4.28。

更新到npm v3之后

 rm -rf node_modules npm -i 

为我工作。 npm issue 2697详细介绍了npm v3中包含的“最大平面”文件夹结构(2015-06-25发布)。

将回购移动到您的驱动器的根目录(临时修复)

您可以尝试暂时将本地回购(整个文件夹)移动到驱动器的根目录或尽可能靠近根目录。

由于path在驱动器根部较小,因此有时可以解决问题。

在Windows上,我将这个移动到C:\或另一个驱动器的根