如何更改 git 子模块跟踪远程分支?
How to change git submodule tracking remote branch?
我使用以下命令添加子模块
git submodule add -b br1 [repo]
.gitmodules 文件有条目 branch=br1 。现在我想将分支切换到 br2。我可以进入子模块文件夹并切换分支,但这不会更新 .gitmodules 文件。
我该怎么做?
Git 使用 .gitmodules 将 link 存储到您的子模块项目,但不是它的特定版本。因此,当您切换子模块的分支时,git .gitmodules 文件不会更改。
相反 git 在您更改子模块时更新子模块版本的提交号。如果你看看你的上层模块
git diff
你会看到类似
的内容
-Subproject commit 829b869657418fdac7964c3671ed9a378f09c032
+Subproject commit 829b869657418fdac7964c3671ed9a378f09c032-dirty
如果您希望每个人都使用新的子模块分支,您必须提交并将该更改(新的子模块提交编号)推送到您的上层模块仓库中。
基本上它对特定子模块版本的工作方式类似于 link。
查看此处了解详情:https://git-scm.com/book/en/v2/Git-Tools-Submodules#Starting-with-Submodules
我遇到了同样的问题。我就是这样解决的。
因为主仓库跟踪的是一个分支,而不是一个特定的提交,拉取子模块中的更改或切换分支不会对主仓库进行任何修改。
相反,编辑 .gitmodules
文件。
有一行
branch = br1
用新分支替换它(至少在子模块中获取之后)
branch = br2
然后在新的提交中,你可以描述从现在开始跟踪的 br2。
然后任何其他开发人员都可以使用 git submodule update --remote
更新他们的克隆以拉取您的更改,并跟踪 br2
。
我使用以下命令添加子模块
git submodule add -b br1 [repo]
.gitmodules 文件有条目 branch=br1 。现在我想将分支切换到 br2。我可以进入子模块文件夹并切换分支,但这不会更新 .gitmodules 文件。
我该怎么做?
Git 使用 .gitmodules 将 link 存储到您的子模块项目,但不是它的特定版本。因此,当您切换子模块的分支时,git .gitmodules 文件不会更改。
相反 git 在您更改子模块时更新子模块版本的提交号。如果你看看你的上层模块
git diff
你会看到类似
的内容-Subproject commit 829b869657418fdac7964c3671ed9a378f09c032
+Subproject commit 829b869657418fdac7964c3671ed9a378f09c032-dirty
如果您希望每个人都使用新的子模块分支,您必须提交并将该更改(新的子模块提交编号)推送到您的上层模块仓库中。
基本上它对特定子模块版本的工作方式类似于 link。
查看此处了解详情:https://git-scm.com/book/en/v2/Git-Tools-Submodules#Starting-with-Submodules
我遇到了同样的问题。我就是这样解决的。
因为主仓库跟踪的是一个分支,而不是一个特定的提交,拉取子模块中的更改或切换分支不会对主仓库进行任何修改。
相反,编辑 .gitmodules
文件。
有一行
branch = br1
用新分支替换它(至少在子模块中获取之后)
branch = br2
然后在新的提交中,你可以描述从现在开始跟踪的 br2。
然后任何其他开发人员都可以使用 git submodule update --remote
更新他们的克隆以拉取您的更改,并跟踪 br2
。