在git repo中消失的头

时间:2009-07-25 10:05:16

标签: git

我的git repo遇到了奇怪的问题。在克隆的过程中,除了主人之外,它会失去所有的头脑。是不是head只是对提交ID的文件引用?或者它应该在其他地方注册以进行克隆?

看起来与William Pursell描述的完全一样:

 cd a
 $ git branch
   master
   * test
 $ cd ..
 $ git clone a b
 Initialized empty Git repository in /private/tmp/b/.git/
 $ cd b
 $ git branch
   * master

2 个答案:

答案 0 :(得分:3)

也许您还没有将所有分支都推送到远程存储库。克隆远程存储库应该自动包含所有远程分支。

请注意,远程分支不会自动成为本地分支。您可以使用git branch -a命令查看您拥有的所有分支。例如:

$ git branch -a
* master
  remotes/origin/next
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

有了这个,我们可以将“下一个”远程分支转换为git checkout -b的本地远程分支,并指定远程分支作为起点:

$ git co -b next origin/next
Branch next set up to track remote branch next from origin.
Switched to a new branch 'next'

现在你已准备好开展“下一步”了。

答案 1 :(得分:1)

我认为你和William Pursell的git安装都有问题。请考虑记录错误报告。

git clone应该做的是将远程头部复制到refs / remotes / origin / *中,然后检查一个新的分支,其名称和状态与远程HEAD的签名相同。

在您的情况下,git branch显示已在源代码库中签出test,因此git clone应根据远程控制台在目标存储库中创建test分支test分支。

这是我得到的。

$ cd a
$ git branch
  master
* test
$ cd ..
$ git clone a b
Initialized empty Git repository in /home/charles/src/gittest/b/.git/
$ cd b
$ git branch
* test
$ git branch -a
* test
  remotes/origin/HEAD -> origin/test
  remotes/origin/master
  remotes/origin/test
$ git config branch.test.remote
origin
$ git config branch.test.merge
refs/heads/test