“ git Branch-r”中没有显示远程分支

我一直在推送一个远程 Bitbucket 存储库,最近一位同事将他创建的一个新分支推送到了同一个存储库。

我正在试图获取他上传的更改。

 $ git branch -a
* master
localbranch1
localbranch2
remotes/origin/master

$Git Branch -r origin/master

在 Bitbucket 的 web UI 中,我可以看到他制作的分支,我该怎么做呢?

下一步:

$ git fetch bitbucket
Password for 'https://xxxxx@bitbucket.org':
From https://bitbucket.org/user/repo
* branch            HEAD       -> FETCH_HEAD

如果他创建的分支名为 new_branch_b,我应该期望看到以下内容吗?

$ git branch -r
origin/master
origin/new_branch_b

第三次尝试:

$ git remote update
Fetching bitbucket
Password for 'https://xxxxx@bitbucket.org':
From https://bitbucket.org/user/repo
* branch            HEAD       -> FETCH_HEAD


$ git branch -r
origin/master

第四次尝试:

[remote "bitbucket"]
url = https://user@bitbucket.org/user/repo.git

我调用的是远程 bitbucket而不是起源(至少我记得是这样; 我前一段时间设置了它)

第五次尝试:

我按照 Kan 的回答更新了 Bitbucket 远程配置:

$git config-e

[remote "bitbucket"]
url = https://user@bitbucket.org/user/repo.git
fetch = +refs/heads/*:refs/remotes/bitbucket/*

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

[remote "origin"]
url = https://user@bitbucket.org/user/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*

之后,

$ git remote update


Fetching bitbucket
Password for 'https://user@bitbucket.org':
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

178266 次浏览

如果你还没有更新你的远程仓库:

$ git remote update
$ git branch -r

remote部分还指定了获取规则。您可以向其中添加类似的内容,以便从远程获取所有分支:

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

(或者用 bitbucket代替 origin。)

请在这里阅读: 10.5 Git Internals-The Refspec

我也遇到了同样的问题。看起来最简单的解决方案就是删除远程,读取它,然后获取。

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

您可以简单地省略该参数或更新

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

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

不幸的是,如果您没有执行“ git 提取”,git branch -agit branch -r会向您显示所有远程分支。

git remote show origin始终如一地工作。git show-ref还显示了 Git 存储库中的所有引用。但是,它的工作方式与 git branch命令类似。

你也可以只写 git checkout BRANCH_NAME,它将在本地创建一个,并将其链接到原点上的那个

你应该收到提示信息: 设置分支‘ BRANCH _ NAME’以从‘ source’跟踪远程分支‘ BRANCH _ NAME’。