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

使用git pull --recurse-submodules后子模块目录为空的求助

Git子模块拉取后为空的问题解决

问题原因

  1. 重命名残留干扰:PokeBattle-Project是从旧路径PokeBattles_project改名过来的,旧目录未完全清理(pull时出现unable to rmdir警告),导致Git对子模块的路径关联逻辑混乱。
  2. 新子模块未完成本地初始化:虽然.gitmodules里已经添加了新子模块的配置,但本地仓库没走完初始化流程——主仓库仅记录了子模块的路径条目,却未在本地创建子模块的Git仓库结构。
  3. 批量更新命令的局限性:git submodule update --remote只对已初始化的子模块生效,新增的未初始化模块不会被处理。

解决步骤

1. 清理异常状态,重新初始化子模块

在主仓库根目录执行以下命令:

# 强制取消两个子模块的本地关联
git submodule deinit -f "Human-Computer Interaction/Project/HCI-Project"
git submodule deinit -f "Semantics and Rewriting/PokeBattle-Project"

# 删除.git目录里残留的子模块配置文件
rm -rf ".git/modules/Human-Computer Interaction/Project/HCI-Project"
rm -rf ".git/modules/Semantics and Rewriting/PokeBattle-Project"

# 从.gitmodules重新初始化这两个子模块
git submodule init "Human-Computer Interaction/Project/HCI-Project"
git submodule init "Semantics and Rewriting/PokeBattle-Project"

2. 拉取子模块代码

初始化完成后,拉取子模块的具体内容:

git submodule update --checkout "Human-Computer Interaction/Project/HCI-Project"
git submodule update --checkout "Semantics and Rewriting/PokeBattle-Project"

3. 验证结果

进入子模块目录查看是否已同步内容:

cd ".\Human-Computer Interaction\Project\HCI-Project\"
ls
cd "../../../Semantics and Rewriting/PokeBattle-Project/"
ls

后续同步建议

之后同步主仓库和所有子模块时,直接用这条命令,能自动初始化新增的子模块:

git pull --recurse-submodules --init

补充说明

你之前执行git submodule foreach git pull origin main报错,是因为部分子模块的默认分支不是main(比如smart-closet用的是master),可以改成拉取子模块当前的分支:

git submodule foreach 'git pull origin $(git rev-parse --abbrev-ref HEAD)'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:22:46