在主仓库无法切换分支的问题

2 阅读1分钟

问题现象

在主仓库从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,才能拿到最新的提交