2012-11-13 41 views
2

我只是好奇,因为我已经注意到,一些库有自己的分支机构的设置是这样的:如何在git的另一个分支下创建分支?

git branch -a 

master 
remotes/origin/branch1 
remotes/origin/branch2/lala 
remotes/origin/branch2/yay 
remotes/origin/branch3 
remotes/origin/branch4 

我只是好奇他们是如何做到的分支lala下BRANCH2 yay;或者那不是分支?

任何见解?

回答

7

branch2/lalabranch2/yay分支不是真的“在”分支branch2。每个只是一个正常的分支,其名称恰好包含/

:; cd /tmp 
:; mkdir gittest 
:; cd gittest 
:; mkdir origin 
:; cd origin 
:; git init 
Initialized empty Git repository in /private/tmp/gittest/origin/.git/ 
:; touch somefile 
:; git add somefile 
:; git commit -m 'initial commit' 
[master (root-commit) 4d62ed7] initial commit 
0 files changed 
create mode 100644 somefile 
:; git branch branch1 
:; git branch branch2/lala 
:; git branch branch2/yay 
:; git branch branch3 
:; git branch branch4 
:; git branch -a 
    branch1 
    branch2/lala 
    branch2/yay 
    branch3 
    branch4 
* master 

:; cd .. 
:; git clone origin local 
Cloning into 'local'... 
done. 
:; cd local 
:; git branch -a 
* master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/branch1 
    remotes/origin/branch2/lala 
    remotes/origin/branch2/yay 
    remotes/origin/branch3 
    remotes/origin/branch4 
    remotes/origin/master 
+3

这很有道理 - 谢谢。我认为我困惑的原因是因为我收到错误:'错误:无法为.git/refs/heads/branch1/lala创建目录致命:无法锁定ref for update:没有这样的文件或目录' 。我发现我得到这个错误是因为'branch1'已经存在了,它不喜欢我用'/ lala'创建另一个。 – xil3