裸git存储库中活动分支的意义是什么?

时间:2014-03-31 09:21:54

标签: git git-bare

当我试图在一个裸仓库中删除一个分支时,我被告知我不能,因为我“正在使用它”。有点令人惊讶,因为我预计不会在一个裸仓库的任何分支上。

哪个分支应该在用作中央存储库的裸仓库中激活,以产生最小的副作用?活跃分支只是非裸回购的遗迹吗?

在裸露回购之前我检查了一个“虚拟”分支,现在我想知道我是否还应该在我的中央裸仓库上有一个“虚拟”分支。

3 个答案:

答案 0 :(得分:4)

Bare repos有一个符号HEAD引用,指向默认分支,通常为master。无论哪个分支origin/HEAD指向的是默认分支,它都会检查该裸仓库的任何克隆。请参阅How does origin/HEAD get set?

另外,来自official Linux kernel docs for git-remote

set-head
     

设置或删除指定遥控器的默认分支(即symbolic-ref refs/remotes/<name>/HEAD的目标)。不需要具有远程的默认分支,但允许指定远程的名称来代替特定的分支。

答案 1 :(得分:1)

我认为你的意思是裸露的回购中的HEAD分支?这只是一个新克隆的线索,当第一次克隆时,哪个分支被认为是默认结帐。这是相当无关紧要的。

答案 2 :(得分:1)

引用git clone manual page

  

--branch <name>
  -b <name>

     

不是将新创建的HEAD指向克隆存储库HEAD所指向的分支,而是指向<name>分支。在非裸存储库中,这是将要检出的分支。 --branch还可以在生成的存储库中对该提交中的HEAD进行标记和分离。

所以基本上你将HEAD保留在远程仓库中,指向你喜欢克隆的任何分支来制作默认分支。无需保留虚拟分支。