我有几个repos中的repos。
在repo3中,我想创建几个分支。当我移回一个repo,即在repo2中,并执行git branch
时,它会显示repo2和repo3中存在的所有分支。但我想要的是能够为它们的repo2创建唯一的分支这些分支不应该出现在repo2中。
这个图表显示了我想要的:
repo1/ repo2/ repo3
| |
| |
| |_ _ _branchX, branchY, branchZ, branchK
|
|
branchA, branchB, branchC
我最后是这样做的:我在每个repo中都做了
git init
。然后我创建了相应的分支。当我移回一个回购并执行git branch
时,它只显示当前回购中存在的分支。
是的,但是它也为嵌套的repo注册了一个gitlink(索引中的一个特殊条目)…无需注册嵌套的repo远程url。
因此,当repo2
将做出新的提交并推送它们时,repo1
将注册新的repo2 SHA1 (gitlink),但不会知道SHA1来自何处(远程repo url)。
再次克隆repo1
将导致空repo2
(没有repo3
)
初始化repo1
的正确方法是分别初始化repo2
和repo3
,即:
cd /path/to/repo2
git submodule add -- /url/repo3
git add .
git commit -m "Add repo3 as submodule"
git push
cd /path/to/repo1
git submodule add -- /url/repo2
git add .
git commit -m "Add repo2 as submodule"
git push
有了这个设置,在repo1
, 2
或3
中完成的git branch
只会显示当前repo的分支。