将特定的git子模块分支绑定到特定的主存储库分支。

10 浏览
0 Comments

将特定的git子模块分支绑定到特定的主存储库分支。

我正在尝试自动化一个重复出现的工作场景。

我有一个名为myRepo的仓库,其中包含一个子模块mySub。我为myRepo创建了一个新分支myRepoBranch,也为mySub创建了一个新分支mySubBranch。我在这两个分支上提交了更改并将它们提交为拉取请求。

问题出现在myRepoBranch中的代码直接依赖于mySubBranch中的代码。如果在提交拉取请求后,我切换到主分支并运行git pullgit submodule updatemySub将不再指向mySubBranch。这种行为是预期的,并且对于主分支来说是完全正常的。但是,如果我需要再次切换到myRepoBranch,我还必须手动切换子模块的mySubBranch

有没有办法自动化这个手动的子模块切换?是否可以将特定的子模块分支绑定到特定的主仓库分支?

0
0 Comments

在git 1.8.2+中,可以使用git submodule add -b branch_name URL_to_Git_repo optional_directory_rename命令将特定的git子模块分支绑定到特定的主repo分支。然而,这种方法在git 2.10+中被更新了。

git 2.10+中增加了一个很棒的功能。在.gitmodules文件中,记录了submodule..branch的分支名称,以便更新--remote时使用。特殊值.用于指示子模块中的分支名称应与当前库中的当前分支名称相同。

因此,可以使用以下命令将特定的git子模块分支绑定到特定的主repo分支:

git submodule add -b . URL_to_Git_repo optional_directory_rename
# update your submodule
git submodule update --remote 

需要注意的是,这段代码中的HTML字符,文本被渲染为submodule..branch,而不是submodule..branch,因为StackOverflow的markdown认为是一个无效的HTML指令,并将其从生成的结果中删除。

参考链接:How can I specify a branch/tag when adding a Git submodule?

0