更改子模块的远程和分支

时间:2016-05-30 00:07:54

标签: git git-submodules

我有一个使用错误的遥控器和错误的分支的子模块。我已经编辑了父git存储库中的.gitmodules文件,因此拥有正确的url(远程)和分支。但是,当我在子模块内部或外部使用git submodule initgit submodule updategit reset --hard origin/branch等的任何变体时,最坏的情况下我会收到错误,最多我得到一个确认命令成功,对子模块目录中的代码没有实际更改

假设我的.gitmodules配置正确,如何正确更新子模块目录,以便显示正确的远程/分支组合的代码?

更新:执行更新时,似乎忽略了子模块配置的“分支”属性。

1 个答案:

答案 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的原因。