基于条件的Git子模块分支

时间:2019-04-03 18:40:34

标签: git git-submodules

我正在尝试将git模型更改为具有masterdevelop分支。我有一个子模块,它也有一个masterdevelop分支。我的.gitmodules当前看起来像这样

[submodule "foo"]
    path = foo
    url = git.bar.com/foo.git

当我需要从主存储库的develop分支的子模块的develop分支提取更改时,我会做类似的事情

cd foo
git checkout develop
git pull origin
cd ..
git commit
git push

master分支中,我可以执行git submodule update --remote从子模块的master分支中获取最新提交。我希望能够对develop分支执行相同的操作。

有什么方法可以有条件地在.gitmodules中设置分支吗?我知道我可以永久设置分支了吗

[submodule "foo"]
    path = foo
    url = git.bar.com/foo.git
    branch = develop

但是这会将问题转移到master

1 个答案:

答案 0 :(得分:0)

在超级项目的分支master中创建

[submodule "foo"]
    path = foo
    url = git.bar.com/foo.git
    branch = master

在超级的分支develop中:

[submodule "foo"]
    path = foo
    url = git.bar.com/foo.git
    branch = develop

向超级项目添加post-checkout钩子,以在分支上切换分支 子模块:

#!/bin/sh

# post-checkout hook that switch branch on submodule

prev_HEAD="$1"
new_HEAD="$2"
new_branch="$3"

if [ "$new_branch" = 1 ]; then
   git submodule update
fi