更改现有子模块的分支

时间:2015-04-26 20:11:59

标签: git git-submodules

当我最初添加我的子模块时,我指定了一个特定的分支,如.gitmodule文件中所示:

[submodule "externals/grpc/grpc"]
    path = externals/grpc/grpc
    url = git@github.com:me/grpc.git
    branch = release-1.0

我想更改为子模块的主分支,因此我将.gitmodules中的分支从release-1.0更改为master,并且为了更好地衡量,只是从我的子模块中删除了子模块父母git树:

cd $submodules
rm -rf grpc
cd $gitroot
git submodule sync
git submodule update --init --recursive

现在,当我回到我的子模块时,它仍然从release-1.0分支上的提交中检出,而不是最新的主提交。

切换子模块的分支时我缺少哪些步骤?

3 个答案:

答案 0 :(得分:5)

如果您想切换到以前从未跟踪过的分支。

更改 .gitmodules 中的分支后,请执行以下操作:

git submodule update --init --recursive --remote
cd submodule_name
git checkout new_branch_name

答案 1 :(得分:4)

进入子模块所在的目录,git checkout正确的分支/提交。然后上升一级,git addgit commit目录。这将使用正确的提交检查子模块。

不要忘记在更新后在其他客户端上运行git submodule update --recursive

答案 2 :(得分:2)

以上答案(@milgner)对我不起作用(git版本2.17.0)。也许我做错了。

以下是对我有用的东西:

Control view = FindControl("view");
//Then add your item to div
view.Controls.Add(item);