我有一个带有多个子模块的git repo。
退房时,我通常按照以下步骤
git clone URL # without --recursive!
所以我只有一个主存储库,已在master中检出
git checkout mybranchname_main_repo
现在我在其分支中签出了一个主存储库
git submodule update --init # now i checkout submodules because now they point to their supposed branch hash and not the master
现在在其分支中拥有主存储库,其子模块(repos)检出到最后一个提交的哈希,该哈希通常也位于开发分支中而不是母版中
我遇到的问题是所有子模块都签出最后提交的哈希值,而不是分支/头。
是否有一个命令可以添加一个附加命令,使子模块从HEAD中的哈希值中检出分支?
类似:(警告,这是伪代码)
用于每个结帐HEAD的git子模块
答案 0 :(得分:0)
将行branch = <branchname>
直接添加到.gitmodules
中将使git submodule update --remote
(有效)更新到分支。您也可以使用git submodule add -b
添加此信息。
或者,git submodule foreach
存在,并且在每个子模块中执行任意shell命令。因此,git submodule foreach 'git checkout HEAD'
也是一个非常有效的命令,用于将每个子模块检出到HEAD
。
或者:Check this question which goes into a lot more detail with plenty of options.