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

Git子模块为何持续以分离头指针模式更新?

子模块重复拉取旧提交的解决方法

1. 彻底清理旧子模块残留

git rm不会完全清除子模块的所有配置,需要手动清理以下内容:

  • 编辑主仓库根目录的.gitmodules文件,删除[submodule "Modules/GLFW"]开头的整个段落
  • 打开.git/config文件,删除所有包含submodule.Modules/GLFW的配置项
  • 删除主仓库内的.git/modules/Modules/GLFW目录(这是Git存储子模块元数据的路径,旧数据会残留)

2. 重新添加子模块(可选指定跟踪分支)

如果希望子模块自动跟踪远程分支,添加时用-b参数指定分支(比如作者仓库的main分支):

git submodule add -b main git@github.com:me/glfw.git Modules/GLFW

若不需要跟踪分支,直接执行基础添加命令即可:

git submodule add git@github.com:me/glfw.git Modules/GLFW

3. 更新主仓库的子模块引用

添加完成后,提交主仓库的配置变更和新的子模块引用:

git add .gitmodules Modules/GLFW
git commit -m "更新GLFW子模块为作者复刻版本"

4. 验证并拉取最新内容

执行以下命令确认子模块拉取新仓库的内容:

git submodule update --init --recursive --remote

--remote参数会强制子模块拉取远程仓库的最新提交,而非主仓库记录的旧哈希。

补充处理分离头状态

如果子模块仍处于分离头状态,可手动切换到目标分支并更新:

cd Modules/GLFW
git checkout main  # 替换为作者仓库的目标分支名
git pull
cd ..
git add Modules/GLFW
git commit -m "同步GLFW子模块到最新分支提交"

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:12:35