Git for Windows中的文件名太长
我正在使用适用于Windows的Git for Windows中的文件名太长,windows,git,Windows,Git,我正在使用适用于Windows的Git-1.9.0-preview20140217。正如我所知,这个版本应该解决文件名过长的问题。但对我来说不是 我肯定做错了什么:我做了git config core.longpaths true和git add.然后git commit。一切都很顺利。但是当我现在执行git status时,我会得到一个文件名太长的文件列表,例如: node_modules/grunt-contrib-imagemin/node_modules/pngquant-bin/nod
Git-1.9.0-preview20140217
。正如我所知,这个版本应该解决文件名过长的问题。但对我来说不是
我肯定做错了什么:我做了git config core.longpaths true
和git add.
然后git commit
。一切都很顺利。但是当我现在执行git status
时,我会得到一个文件名太长的文件列表,例如:
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”)创建一个web应用程序,并从.gitignore
文件中删除节点模块。然后重复前面提到的Git命令
我在这里遗漏了什么?Git的文件名限制为4096个字符,但在Windows上使用msys编译Git时除外。它使用较旧版本的Windows API,文件名限制为260个字符
据我所知,这是msys的限制,而不是Git的限制。您可以在此处阅读详细信息:
您可以通过在Windows上使用另一个Git客户端或将core.longpaths
设置为true
来规避此问题,如其他答案中所述
git config --system core.longpaths true
Git是脚本和编译代码的组合。如果进行上述更改,某些脚本可能会失败。这就是默认情况下不启用core.longpaths的原因
位于的windows文档包含一些详细信息:
从Windows10版本1607开始,最大路径限制已被取消
从常见的Win32文件和目录函数中删除。然而,你
必须选择新的行为
注册表项允许您启用或禁用新的长路径
行为。要启用长路径行为,请将注册表项设置为
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathEnabled
(类型:REG_DWORD)
您应该能够运行该命令
git config --system core.longpaths true
或者,在使用受支持的Git版本后,手动将其添加到Git配置文件中,以打开此功能。它看起来可能是1.9.0或更高版本。我也有这个错误,但在我的例子中,原因是使用了过时的npm版本v1.4.28
更新到npm v3,然后
rm -rf node_modules
npm -i
为我工作。npm第2697期详细介绍了npm v3(2015-06-25发布)中包含的“最大平面”文件夹结构。这可能有助于:
git config core.longpaths true
基本解释:此答案建议不要将此设置应用于全局系统(适用于所有项目,以避免--system
或--global
标记)配置。此命令仅通过特定于当前项目来解决问题
编辑:
这是一个与“权限被拒绝”问题相关的重要答案,适用于那些未被授权全局更改git设置的用户。Create.gitconfig并添加
[core]
longpaths = true
您可以在项目位置(不确定)和全局位置创建文件。在我的例子中,位置是C:\Users\{name}\
更好的解决方案是从Git启用longpath参数
git config --system core.longpaths true
但一个可行的解决办法是从Git中删除node_modules文件夹:
$ git rm -r --cached node_modules
$ vi .gitignore
在.gitignore文件内的新行中添加节点_模块。执行此操作后,按下您的修改按钮:
$ git add .gitignore
$ git commit -m "node_modules removed"
$ git push
为了完全确保它在存储库初始化后立即生效,但在获取远程历史记录或签出任何文件之前,以这种方式使用它更安全:
git clone -c core.longpaths=true <repo-url>
git clone-c core.longpaths=true
-c键=值
在新创建的存储库中设置配置变量;这将在存储库初始化后立即生效,但是
在获取远程历史记录或签出任何文件之前。钥匙
与git config预期的格式相同(例如。,
core.eol=true)。如果为同一个键提供多个值,则每个
值将写入配置文件。这使得它安全,因为
例如,将其他fetch REFSECs添加到源远程
将存储库移动到驱动器的根目录(临时修复)
您可以尝试将本地存储库(整个文件夹)临时移动到驱动器的根目录下或尽可能靠近根目录
由于驱动器根部的路径较小,因此有时会修复问题
Windows,我将它移到<代码> C:\/COD>或另一个驱动器的根。
< P>如果您正在使用加密分区,请考虑将文件夹移到未加密分区,例如<强> /TMP < /强>,运行<代码> Git拉< /C> >,然后移动。步骤如下(Windows):
以管理员身份运行Git Bash
运行以下命令:
注意:如果步骤2不起作用或出现任何错误,您也可以尝试运行以下命令:
git config --global core.longpaths true
git config --global core.longpaths true
阅读更多关于git config的信息,您还可以尝试启用长文件路径
如果运行Windows 10 Home Edition,则可以更改注册表以启用长路径
进入regedit
中的HKEY\u LOCAL\u MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
,然后将LongPathsEnabled
设置为1
如果您有Windows 10 Pro或Enterprise,也可以使用本地组策略
转到计算机配置→ 管理模板→ 系统→ 文件系统在gpedit.msc
中,打开Enable Win32 long path并将其设置为Enabled。执行git config--system core.longpaths true
时向我抛出错误:
“错误:无法锁定配置文件C:\Program Files
(x86)\Git\mingw32/etc/gitconfig:权限被拒绝”
修复了在全局级别执行命令的问题:
上述命令对我有效。在windows计算机中使用“--system”时出现配置文件未锁定错误
以管理员身份运行命令提示符,然后在命令下方运行
git config--system core.longpaths true
git config --global core.longpaths true
git config --global core.longpaths true
git config --system core.longpaths true