首页 > 解决方案 > git - 子模块 - 结帐银行而不是哈希

问题描述

我有一个带有多个子模块的 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 中的哈希值中检出分支?

类似于:(警告,这是伪代码)

git submodule foreach 结帐 HEAD

标签: gitgit-submodules

解决方案


将行branch = <branchname>直接添加到.gitmodules将允许git submodule update --remote(有效地)更新到分支。您也可以使用 添加此信息git submodule add -b

或者,git submodule foreach在每个子模块中存在并执行任意 shell 命令。因此,git submodule foreach 'git checkout HEAD'检查每个子模块到HEAD.

或者:检查这个问题,其中包含很多选项,其中包含更多细节。


推荐阅读