2015-09-07 294 views
4

我使用下面的命令如何更改git子模块跟踪远程分支?

git的子模块添加-b BR1 [回购]

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

我该怎么做?

+0

为什么要这样做?如果你仔细想想,如果你改变子模块正在跟踪的分支,那么是否可能抛弃其他人的代码呢?子模块是一个非常棘手的Git区域。您的问题可能有解决方法。 –

+1

我正在一个稳定的分支br1上工作,并且想要在实验br2上进行测试。如果我不更新.gitmodules文件,其他用户将无法看到它。 – Rohit

回答

1

Git使用.gitmodules存储指向子模块项目的链接,但不是它的特定版本。所以当你切换子模块的分支时,git .gitmodules文件不会改变。

改为子模块时,git updates会提交子模块版本号。如果你看看你的上部模块

git diff 

,你会看到类似

-Subproject commit 829b869657418fdac7964c3671ed9a378f09c032 
+Subproject commit 829b869657418fdac7964c3671ed9a378f09c032-dirty 

如果你希望每个人都使用新的子模块的分支,你必须承诺&推动这种变化(新的子模块提交数)进入你的上层模块回购。

基本上它就像一个链接到特定的子模块版本。

查看详情:https://git-scm.com/book/en/v2/Git-Tools-Submodules#Starting-with-Submodules

+0

我没有看到差异,因为我创建了一个分支,并且除了指针之外什么都没有做! – Rohit

+0

但是,这仍然是关于提交。 如果要更新提交*和*更改分支,是否直接编辑.gitmodules文件的正确工作流? – Pxtl