。gitmodules中为每个子模块指定的Checkout分支?

问题描述 投票:0回答:1

我在许多不同的路径上都有子模块。一些子模块位于我们存储库的根目录中,大多数子模块位于src / app / shared-comps中,但是许多子模块分散在各处。当我克隆项目时,子模块的分支都处于分离的HEAD状态,并且我想在.gitmodules文件中指定的分支上设置它们。我目前是这样手动进行的:

cd submodule1 && git checkout master && cd .. &&
cd src/app/shared-comps &&
find . -maxdepth 1 -mindepth 1 -type d -exec sh \
    -c "(echo {} && cd {} && git checkout our-fork && echo)" \;
# so on and so forth

我如何拥有一个避免对submodule1进行硬编码的脚本,而src/app/shared-comps应该都在our-fork上进行?实际上,如果某些共享压缩文件不应该位于our-fork分支上,而应该位于master上,那么如何让它们进入.gitmodules中指定的任何分支上?

git-submodules
1个回答
0
投票

无论何时要将子模块设置为.gitmodules中设置的分支,都可以运行此命令:

git submodule foreach 'git checkout `git config -f $toplevel/.gitmodules submodule.$sm_path.branch`'

这是从头开始设置新项目时的最佳运行。

[当您执行git pull且分支名称更改时,您需要再次运行它。我不确定会为您完成此操作的git hook。 Git没有post-pull钩子,您可以在其中执行这些操作

© www.soinside.com 2019 - 2024. All rights reserved.