我有一个使用错误的遥控器和错误的分支的子模块。我已经编辑了父git存储库中的.gitmodules
文件,因此拥有正确的url(远程)和分支。但是,当我在子模块内部或外部使用git submodule init
,git submodule update
,git reset --hard origin/branch
等的任何变体时,最坏的情况下我会收到错误,最多我得到一个确认命令成功,对子模块目录中的代码没有实际更改。
假设我的.gitmodules
配置正确,如何正确更新子模块目录,以便显示正确的远程/分支组合的代码?
更新:执行更新时,似乎忽略了子模块配置的“分支”属性。
答案 0 :(得分:1)
按removing the submodule并执行git submodule add
,请参阅示例this other answer of mine。这个问题没有完全重复,但解释了为什么只更新.gitmodules不会做的伎俩:
" git子模块添加"命令做了几件事:
- 它克隆当前目录下的子模块,默认情况下检出主分支。
- 它将子模块的克隆路径添加到" .gitmodules"文件并将此文件添加到索引中,准备提交。
- 它将子模块的当前提交ID添加到索引中,准备提交。
所以你会错过最后一步,而git submodule init / update期望提交id已经到位。这就是你需要
git submodule add
的原因。