Windows 10执行git checkout检出GitHub仓库文件夹提示文件名过长无法创建文件
Windows环境Git检出时文件名过长报错的解决方法
报错场景还原
你在Windows 10 Pro环境下,执行命令git checkout d88a4fce9 *尝试检出目标提交的部分文件夹内容时,触发路径长度超限报错,中断在嵌套层级较深的node_modules目录文件创建环节,仅完成2个路径的更新流程,本地配套环境为Node v14.16.0、npm 6.14.11。
核心报错原因
Windows系统默认存在260字符的单路径长度上限,node_modules目录下的依赖包嵌套层级深,总路径长度超出阈值后就会触发文件创建失败的错误。
分步可执行解决方案
1. 开启系统级长路径支持
- 按下
Win+R组合键调出运行窗口,输入regedit打开注册表编辑器 - 定位到注册表路径
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem - 找到
LongPathsEnabled配置项,将其数值修改为1,重启电脑后配置生效
该功能需要Windows 10 1607及以上版本支持,当前使用的Win10 Pro环境满足版本要求
2. 配置Git的长路径兼容能力
- 以管理员身份打开Git命令行,执行全局系统级配置命令,开启Git对长路径的支持:
git config --system core.longpaths true - 执行验证命令
git config --get core.longpaths,输出为true即代表配置生效
3. 修正不合理的检出操作逻辑
- 你当前使用的
git checkout d88a4fce9 *命令存在逻辑偏差:通配符*会匹配当前工作区下的所有文件路径,并非定向检出你需要的部分文件夹,容易把仓库里冗余的node_modules目录全量拉取到本地,放大超长路径的触发概率 - 定向检出指定文件夹的正确操作流程:
- 在仓库目录下开启稀疏检出配置:
git config core.sparseCheckout true - 打开仓库下
.git/info/sparse-checkout文件,逐行写入你需要拉取的具体文件夹路径,不需要将node_modules这类依赖目录纳入检出范围 - 再执行切换目标提交的操作,避开深层嵌套的依赖文件的拉取
- 在仓库目录下开启稀疏检出配置:
额外优化建议
- 绝大多数GitHub公开仓库不会将node_modules这类第三方依赖目录纳入版本控制,你本次检出时拉取的node_modules内容本身不属于项目核心代码,检出完成后可以直接删除该目录,在对应项目路径下执行
npm install重新安装匹配版本的依赖,从根源上减少超长路径的生成概率 - 本地存储代码仓库时,尽量将仓库根目录放在盘符下的浅层路径(如
D:\git-repo\),不要嵌套在多层级的私人文件夹目录下,从整体上缩短项目的总路径长度,降低超限风险
内容的提问来源于stack exchange,提问作者spongeabb
相关产品推荐
相关产品推荐

