在我复制了一个repo后,新的分支test
已添加到origin
遥控器中。但我仍然看到:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
我应该使用什么git命令来获得以下输出:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/test
git checkout remote branch问题不是我的问题,因为在我看到所有远程分支引用之后就会发生这种情况。
我无法再次克隆回购,因为我在其中进行了本地更改/提交。
那么,如何使用git命令将新的远程分支引用引入我的repo?
我正在使用具有以下分支的BitBucket仓库:
试验
git fetch
不起作用:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git fetch
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git fetch origin
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
答案 0 :(得分:3)
发现问题!!!
深度为1的git克隆:
git clone --depth 1 <repo>
只需要master分支引用,为此repo生成的git repote config将是:
[remote "origin"]
url = git@bitbucket.org:jillix/cctool.git
fetch = +refs/heads/master:refs/remotes/origin/master
而不是:
[remote "origin"]
url = git@bitbucket.org:jillix/cctool.git
fetch = +refs/heads/*:refs/remotes/origin/*
这将使获取失败带来所有远程引用。
答案 1 :(得分:2)
简单的git fetch
就足够了。
这会将原产地/测试带到你的回购中。
然后git checkout -b test origin/test
将在本地声明该分支。
OP Gabriel Petrovay确认(in the comments)问题的根源:
git配置文件略有变化。
- 在新克隆的回购邮件
[remote "origin"]
中有fetch = +refs/heads/*:refs/remotes/origin/*
- 但旧回购邮件有
fetch = +refs/heads/master:refs/remotes/origin/master
。我觉得这是个问题。
确实如此。
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
那应该解决它。