我使用以下命令添加了一个子模块:
git submodule add -b br1 [repo]
.gitmodules文件中有一条输入branch=br1。现在我想将分支切换到br2,我可以进入子模块文件夹并切换分支,但这并不会更新.gitmodules文件。
如何做到呢?
我使用以下命令添加了一个子模块:
git submodule add -b br1 [repo]
.gitmodules文件中有一条输入branch=br1。现在我想将分支切换到br2,我可以进入子模块文件夹并切换分支,但这并不会更新.gitmodules文件。
如何做到呢?
Git使用.gitmodules来存储子模块项目的链接,但不是特定版本。因此,当您切换子模块的分支时,git .gitmodules文件不会被更改。
相反,当您更改子模块时,git会更新子模块版本的提交号。如果您查看上层模块,则可以看到已更新的子模块版本。
git diff
你会看到类似这样的东西
-Subproject commit 829b869657418fdac7964c3671ed9a378f09c032
+Subproject commit 829b869657418fdac7964c3671ed9a378f09c032-dirty
我面临相同的问题。这是我的解决方法。
因为主仓库跟踪的是一个分支而不是特定的提交,所以在子模块中拉取更改或切换分支不会修改主仓库。
相反,编辑 .gitmodules
文件。有一行
branch = br1
用新分支替换它(在子模块中至少进行一次获取后)
branch = br2
然后在一个新的提交中,您可以描述从现在开始跟踪的br2。
然后,任何其他开发人员都可以使用git submodule update --remote
更新他们的克隆以拉取您的更改,并跟踪br2
。