Git:父仓库引用子模块旧修订版本,如何更新远程引用?
Git父仓库远程引用子模块旧版本的问题解决
问题成因
父仓库对子模块的具体提交版本是存在于父仓库自身的提交记录中的,并非自动同步。出现这个问题的核心原因是:你本地更新了子模块到最新状态,但没在父仓库里更新这个引用并推送到远程——远程父仓库的旧提交记录里,依然保存着子模块的旧哈希值。
修正步骤
按以下操作就能把父仓库的子模块引用更新到最新并同步到远程:
- 切换到本地父仓库目录:
cd path/to/parent-repo-P - 拉取子模块的最新代码(确保子模块本身是远程最新状态):
git submodule update --remote my_submodule # 也可以手动进入子模块拉取:cd my_submodule && git pull origin main && cd .. - 此时父仓库会检测到子模块的引用变更,提交这个变更:
git add my_submodule git commit -m "Update submodule my_submodule to latest commit" - 推送到GitLab远程仓库:
git push origin <你的目标分支,比如main>
可能的额外排查点(针对之前方案无效的情况)
- 确认你操作的是父仓库的正确分支,别在本地其他分支提交后推错分支
- 检查
.gitmodules文件里的branch字段,确保子模块跟踪的是你预期的远程分支(比如main而不是其他旧分支) - 如果本地父仓库有未提交的变更,先 stash 或者提交,避免影响子模块引用的提交
内容的提问来源于stack exchange,提问作者qkx
相关产品推荐
相关产品推荐

