You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git subtree split触发最大函数递归深度报错该如何解决?

报错根本原因

你遇到的递归深度限制并非Git核心C代码的硬编码限制:

  • git subtree 本质是Shell脚本,对应你报错路径中的/usr/lib/git-core/git-subtree文件,并非C编译的Git核心组件
  • 报错里的1000递归深度阈值是你的Ubuntu 21.04默认Shell环境的配置,而非Git的限制
  • 同事执行正常是因为其Shell默认的递归深度阈值更高,或Shell版本、配置与你存在差异

修复方案

方案1:临时修改(当前终端会话生效)

执行split命令前,先在当前终端运行以下命令调高Shell递归深度阈值:

export FUNCNEST=2000

再执行你的git subtree split -P foo/ -b "foo-branch"命令即可,阈值可以根据仓库规模调整为3000、5000等值。

注:FUNCNEST是Bash/Sh内置的控制函数递归深度的环境变量,大部分桌面发行版默认值为1000,即你报错中触发的阈值。

方案2:永久生效

将export FUNCNEST=5000写入你当前使用Shell的用户配置文件(~/.bashrc对应Bash,~/.zshrc对应Zsh),保存后执行source ~/.bashrc(或对应你修改的配置文件)即可长期生效。

方案3:升级Git版本

你当前使用的Git 2.30.2为2021年发布的旧版本,2.38及以上版本的Git对git subtree split的递归逻辑做了大幅优化,大仓库执行时的递归深度显著降低,无需修改Shell配置即可正常运行。你可以通过官方Git PPA源升级到最新稳定版Git解决问题。

关于Git递归深度自定义的说明

  • Git核心C组件的相关递归深度大多支持通过git config自定义配置,例如diff递归、子模块递归相关参数
  • 本次报错涉及的git-subtree脚本的递归深度不属于Git核心配置项,修改Shell的FUNCNEST环境变量即可自定义调整阈值

内容的提问来源于stack exchange,提问作者Sváťa Filev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:57:04