不同分支的子模块

时间:2013-07-29 14:04:17

标签: git

我想将submodule_A放在master中,并将submodule_B放在new_branch上。

但是,在master上,我可以看到repo中的submodule_A和submodule_B。

如何在右分支处分开两个子模块?

感谢回复!!!

注意:我之前使用以下命令。

git submodule add -b new_branch submodule_B;

但是submodule_B仍存在于主分支上。

当我结帐主人时,git显示

warning: unable to rmdir submodule_B

当我签出new_branch时,git会显示

warning: unable to rmdir submodule_A

============================================== < / p>

例如

https://github.com/ShawnHuang/.vim/tree/master/bundle

所有插件都是我的仓库中的子模块。

在分支主机上,我想使用ultisnips。

而且,在branch junk / snipmate上,我想使用snipmate。

我可以在github上将不同分支的两个子模块分开。

但我不能在当地这样做。

2 个答案:

答案 0 :(得分:1)

创建新分支

git branch submodule-b

结帐该模块

git checkout submodule-b

添加所有子模块文件并提交它们

git add .
git commit -m 'Submodule new branch created'

去主/子模块一个分支

git checkout submodule-a

答案 1 :(得分:1)

Git不会删除未使用的子模块工作副本

如果你创建2个分支,有2个不同的子模块:

$ git init
$ git checkout -b one
$ git submodule add git@github.com/a/repo.git one
$ git checkout -b two
$ git submodule add git@github.com/another/repo.git two

当不是当前分支的一部分时,它们被简单地视为未跟踪文件。即除非您自己在切换分支时删除未引用的子模块,否则它们将出现在所有分支中:

$ git checkout master
$ ls
one two
$ git checkout one
$ ls
one two
$ git checkout two
$ ls  
one two

一个简单的方法来做你要求的只是移动子模块文件夹,只要它不相关:

$ git checkout one
$ mv two .two
$ git checkout two
$ mv .two two
$ mv one .one