小编典典

添加 Git 子模块时如何指定分支/标签?

all

如何git submodule add -b工作?

添加具有特定分支的子模块后,新的克隆存储库(之后git submodule update --init)将位于特定提交处,而不是分支本身(git status子模块上显示“当前不在任何分支上”)。

我找不到关于子模块分支或任何特定提交的任何信息.gitmodules.git/config那么 Git 是如何计算出来的呢?

另外,是否可以指定标签而不是分支?

我正在使用版本 1.6.5.2。


阅读 383

收藏
2022-02-28

共1个答案

小编典典

注意:Git 1.8.2 添加了跟踪分支的可能性。请参阅下面的一些答案。


习惯这一点有点令人困惑,但子模块不在分支上。正如您所说,它们只是指向子模块存储库的特定提交的指针。

这意味着,当其他人签出您的存储库或提取您的代码并执行 git submodule update 时,子模块将签出到该特定提交。

这对于不经常更改的子模块非常有用,因为项目中的每个人都可以在同一个提交中拥有子模块。

如果要将子模块移动到特定标签:

cd submodule_directory
git checkout v1.0
cd ..
git add submodule_directory
git commit -m "moved submodule to v1.0"
git push

然后,另一个想要将 submodule_directory 更改为该标签的开发人员,这样做

git pull
git submodule update --init

git pull提交其子模块目录指向的更改。 git submodule update实际上合并到新代码中。

2022-02-28