git中的文件名太长,
我为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”)创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:\
或另一个驱动器的根