阅读 git 命令的文档后,submodule
我发现可以使用以下命令为子模块指定分支
git submodule set-branch -branch <branch name> -- <submodule path>
.gitmodules
这将在文件中生成一个配置条目
> git config --file .gitmodules --get-regex branch
...
submodule.<submodule name>.branch = <branch name>
但是文档没有描述这些数据的用途。子模块仍然在分离的头状态下检出,我未能找到一种方法来使用此信息从父存储库中对子模块进行检出,从而将子模块设置为跟踪分支的状态,而无需直接在子模块内部进行检出。
提供此信息有什么好处(除了包含.gitmodules
可以由我自己的脚本检索和使用的信息的文件之外)?(或者我只是以错误的方式进行了子模块的初始化/更新?)
答案1
如果您使用 --branch 选项添加子模块,则可以使用 --remote 选项将子模块更新为该分支的最新提交。
git submodule add -b example URLHERE
git submodule init
git submodule update --recursive --remote
答案2
人们可以使用 git submodules 来对外部依赖项进行严格的版本管理。
Git 子模块允许您将另一个存储库在特定时间的快照中保存为您的存储库的子目录,以这种方式合并和跟踪外部代码的版本历史记录。
git 子模块指向外部存储库中的特定提交。它是静态的,仅跟踪特定提交,但不跟踪 git 引用或分支,并且不会在该存储库更新时自动更新。这就是人们使用分支的原因。