如何git submodule add -b工作?
git submodule add -b
添加具有特定分支的子模块后,新的克隆存储库(之后git submodule update --init)将位于特定提交处,而不是分支本身(git status子模块上显示“当前不在任何分支上”)。
git submodule update --init
git status
我找不到关于子模块分支或任何特定提交的任何信息.gitmodules,.git/config那么 Git 是如何计算出来的呢?
.gitmodules
.git/config
另外,是否可以指定标签而不是分支?
我正在使用版本 1.6.5.2。
注意: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实际上合并到新代码中。
git pull
git submodule update