我有一个包含多个子模块的 git 存储库。
结账时,我通常执行以下操作
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
现在在其分支中拥有主存储库,其子模块(存储库(签出到最后一个提交的哈希,该哈希通常也在开发分支中,而不是主
我遇到的问题是所有子模块都签出最后一个提交的哈希值,而不是分支/头。
是否有一个命令可以添加一个额外的命令,使子模块从 HEAD 中的哈希值中签出分支?
像这样:(警告,这是伪代码(
git 子模块为每个结帐头
将行branch = <branchname>
直接添加到.gitmodules
中将允许git submodule update --remote
(有效地(更新到分支。您还可以使用git submodule add -b
添加此信息。
或者,git submodule foreach
存在,并在每个子模块中执行任意 shell 命令。因此,git submodule foreach 'git checkout HEAD'
也是一个完全有效的命令,可以将每个子模块检出HEAD
。
或者:检查这个问题,它有很多选项,更详细。