是否可以与子模块同步检出主存储库的分支?

时间:2017-05-04 00:38:02

标签: git git-submodules bamboo

我想要实现的是每当我在主存储库中使用git checkout时,例如:

git checkout my-branch

我的子模块将遵循my-branch而不是分离头。

是否有可能,如果可以,怎么样?

1 个答案:

答案 0 :(得分:3)

如果这些子模块库有自己的my-branch,它们可以是declared to follow that branch

cd /path/to/your/parent/repo/Foo
git config -f .gitmodules submodule.bar1.branch my-branch
git config -f .gitmodules submodule.bar2.branch my-branch

git submodule update --remote

但这涉及到每次检查父仓库中的分支时重复这个。

torek指出in the comments这些子模块可能有自己的子模块,因此需要--recursive选项。

  

您可能还想在--recursive命令中添加--no-fetch和/或git submodule update --remote
  而不是单独的git config -f操作,您可能需要git submodule foreach,也可能需要--recursive

git submodule foreach -q --recursive 'git config -f $toplevel/.gitmodules submodule.$name.branch my_branch'

多行可读性:

git submodule foreach -q --recursive \
  'git config -f $toplevel/.gitmodules submodule.$name.branch my_branch'

然后你可以检查该分支的每个子模块:

git submodule foreach -q --recursive 'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; git checkout $branch'

多行可读性:

git submodule foreach -q --recursive \
  'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; \
   git checkout $branch'