如何使用每个本地分支的特定Git子模块修订版?

时间:2012-03-29 16:15:57

标签: git version-control git-submodules

我有一个dev和一个主分支的git repo。现在我试图在每个分支中使用不同的子模块修订版。例如,我这样做:

git checkout master
cd submodule
git checkout v1.0
cd ..
git commit -a -m "now using submodule v1.0"
git checkout dev
cd submodule
git checkout v2.0
cd ..
git commit -a -m "let's try submodule v2.0"

之后我检查了主分支,看来主分支中的子模块也指向v2.0提交而不是v1.0。

我已经阅读了很多关于git子模块的内容,但它对我来说似乎有点抽象。在这种特殊情况下,有人可以解释如何正确使用子模块吗? (git版本1.7.3.1)

谢谢!

1 个答案:

答案 0 :(得分:1)

只更改超级项目中的分支不会改变子模块中的内容;分支更改只会更改超级项目的子模块的提交引用。你需要这样做:

git submodule update

签出超级项目中的分支后。 'update'将更改子模块以引用正确的提交。这是一个例子:

ebg@taiyo(84)$ git checkout master
M test1
Switched to branch 'master'
ebg@taiyo(85)$ git submodule update
Submodule path 'test1': checked out '16aff6eed3998f14eb96b4f61666b47160de0e6b'
ebg@taiyo(89)$ git checkout top-other
M test1
Switched to branch 'top-other'
ebg@taiyo(90)$ git submodule update
Submodule path 'test1': checked out 'af33fca078dbb1fa415f9ea7fafb1b92cad1c6ae'
ebg@taiyo(91)$ git status
# On branch top-other
nothing to commit (working directory clean)