git-子模块-结帐行而不是哈希

时间:2019-12-06 10:25:53

标签: git git-submodules

我有一个带有多个子模块的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子模块

1 个答案:

答案 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.