更改现有子模块的分支
Changing an existing submodule's branch
当我最初添加我的子模块时,我指定了一个特定的分支,如 .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
,为了更好的措施,只是删除了子模块来自我的 parent git 树:
cd $submodules
rm -rf grpc
cd $gitroot
git submodule sync
git submodule update --init --recursive
现在,当我回到我的子模块时,它仍然是从 release-1.0
分支上的提交中检出的,而不是最新的主提交。
我缺少哪些步骤来切换子模块的分支?
进入子模块所在的目录,git checkout
正确的branch/commit。然后上一层 git add
和 git commit
目录。这将检查具有正确提交的子模块。
并且不要忘记在更新其他客户端后 运行 git submodule update --recursive
。
上面的答案 (@milgner) 对我不起作用(git 版本 2.17.0)。可能是我做错了。
以下是对我有用的:
nano .gitmodules # substitute the needed branch here
git submodule update submodule_name # update the submodule
git add .gitmodules && git commit -m 'some comment' # add and commit
git submodule status # check that changes have been applied
如果你想切换到你以前从未跟踪过的分支。
更改 .gitmodules
中的分支后,执行以下操作:
git submodule update --init --recursive --remote
cd submodule_name
git checkout new_branch_name
当我最初添加我的子模块时,我指定了一个特定的分支,如 .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
,为了更好的措施,只是删除了子模块来自我的 parent git 树:
cd $submodules
rm -rf grpc
cd $gitroot
git submodule sync
git submodule update --init --recursive
现在,当我回到我的子模块时,它仍然是从 release-1.0
分支上的提交中检出的,而不是最新的主提交。
我缺少哪些步骤来切换子模块的分支?
进入子模块所在的目录,git checkout
正确的branch/commit。然后上一层 git add
和 git commit
目录。这将检查具有正确提交的子模块。
并且不要忘记在更新其他客户端后 运行 git submodule update --recursive
。
上面的答案 (@milgner) 对我不起作用(git 版本 2.17.0)。可能是我做错了。
以下是对我有用的:
nano .gitmodules # substitute the needed branch here
git submodule update submodule_name # update the submodule
git add .gitmodules && git commit -m 'some comment' # add and commit
git submodule status # check that changes have been applied
如果你想切换到你以前从未跟踪过的分支。
更改 .gitmodules
中的分支后,执行以下操作:
git submodule update --init --recursive --remote
cd submodule_name
git checkout new_branch_name