问题现象
在主仓库从dev分支切换到main分支时报错:切换分支将导致有些项目overwritten
排查过程
1.发现子仓库在dev分支是被关联为仓库的,但在main分支中是普通的项目
2.删除本地主仓库的整个子仓库,成功切换为main分支
3.在主仓库中使用git submodule拉取子仓库时发现拉取的是上次的提交,不是最新的提交
4.进入子仓库,切换到main分支,使用git pull拉取main的最新代码
5.在主仓库中使用 git add 子仓库名并push
6.成功拉去主仓库代码并关联最新子仓库
问题根因
1.主仓库的main分支中没有关联子仓库
经验教训
1.每次在提交主仓库前都需要拉去子仓库最新代码,然后将子仓库全部 git add,这样主仓库才能每次都关联最新的子仓库
eg:
cd ai-agent
git pull
cd ..
git add ai-agent
git push
原理剖析
git的设计:本地的主仓库关联子仓库只能关联本地已有的最新提交,所有需要在子仓库中 git pull,才能拿到最新的提交