远程分支没有出现在“git branch -r”中


Remote branch not showing up in “git branch -r”

我一直在推动一个远程BitBucket回购,最近一位同事将他创建的一个新分支推到了同一个回购。

我正在尝试获取他上载的更改。

1
2
3
4
5
 $ git branch -a  
 * master
 localbranch1
 localbranch2
 remotes/origin/master

$ git branch -r
origin/master

在BitBucket的Web UI中,我可以看到他所做的分支。任何帮助/建议/指导都将不胜感激。谢谢。

你还需要什么信息,只要问问。

编辑1

1
2
3
4
$ git fetch bitbucket
Password for 'https://[email protected]':
From https://bitbucket.org/user/repo
 * branch            HEAD       -> FETCH_HEAD

如果他创建的分支称为"新分支",我是否应该看到:

1
2
3
$ git branch -r    
origin/master
origin/new_branch_b

编辑2

1
2
3
4
5
6
7
8
9
$ git remote update
Fetching bitbucket
Password for 'https://[email protected]':
From https://bitbucket.org/user/repo
 * branch            HEAD       -> FETCH_HEAD


$ git branch -r
  origin/master

编辑3

1
2
[remote"bitbucket"]
url = https://[email protected]/user/repo.git

我调用了远程BitBucket而不是Origin(至少我记得,我不久前设置的)。

编辑4

我根据菅直人的回答更新了位桶远程配置。

$ git config -e

1
2
3
[remote"bitbucket"]
    url = https://[email protected]/user/repo.git
    fetch = +refs/heads/*:refs/remotes/bitbucket/*

对大多数人来说,它将被称为起源。

1
2
3
[remote"origin"]
    url = https://[email protected]/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*

之后

1
2
3
4
5
6
7
8
9
10
11
$ git remote update

Fetching bitbucket
Password for 'https://[email protected]':
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 35 (delta 21), reused 0 (delta 0)
Unpacking objects: 100% (35/35), done.
From https://bitbucket.org/user/repo
 * [new branch]      branch_name1 -> origin/branch_name1
 * [new branch]      branch_name2    -> origin/branch_name2

…等等。

我认为git fetch origin也适用于git remote update

感谢所有帮助我解决这个问题的人。


如果还没有更新遥控器:

1
2
$ git remote update
$ git branch -r


remote部分还指定了获取规则。您可以在其中添加类似的内容:

1
fetch = +refs/heads/*:refs/remotes/origin/*

从远程获取所有分支。(或用bitbucket代替origin)。

请在这里阅读:https://git-scm.com/book/en/v2/git-internals-the-refspec


如果使用--depth参数进行克隆,它将.git/config设置为不提取所有分支,只提取master。

您可以简单地省略参数或从中更新配置文件

1
fetch = +refs/heads/master:refs/remotes/origin/master

1
fetch = +refs/heads/*:refs/remotes/origin/*


我也有同样的问题。似乎最简单的解决方案就是移除远程,重新添加它,然后获取。


不幸的是,如果您没有执行"git fetch",那么git branch -agit branch -r不会显示所有远程分支。git remote show origin一直工作稳定。另外,git show-ref显示了git repo中的所有引用。不过,它的工作原理和git branch命令一样