如何更改git子模块跟踪远程分支?

Roh*_*hit 5 git git-submodules

我使用以下命令添加子模块

git submodule add -b br1 [repo]

.gitmodules 文件有条目 branch=br1 。现在我想将分支切换到 br2。我可以进入子模块文件夹并切换分支,但这不会更新 .gitmodules 文件。

我怎么能做到这一点?

Dmi*_*eev 3

Git 使用 .gitmodules 来存储子模块项目的链接,但不存储子模块项目的特定版本。因此,当您切换子模块的分支时, git .gitmodules 文件不会更改。

相反,当您更改子模块时,git 会更新子模块版本的提交号。如果你看看你的上层模块

git diff
Run Code Online (Sandbox Code Playgroud)

你会看到类似的东西

-Subproject commit 829b869657418fdac7964c3671ed9a378f09c032
+Subproject commit 829b869657418fdac7964c3671ed9a378f09c032-dirty
Run Code Online (Sandbox Code Playgroud)

如果您希望每个人都使用新的子模块分支,则必须提交该更改(新子模块提交号)并将其推送到上层模块存储库中。

基本上它的工作原理就像特定子模块版本的链接。

请参阅此处了解详细信息:https://git-scm.com/book/en/v2/Git-Tools-Submodules#Starting-with-Submodules