我的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
答案 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