172

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

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

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

$ git 分支 -r 原点/主

在 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配置-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.

4

5 回答 5

267

如果您还没有这样做,请更新您的遥控器:

$ git remote update
$ git branch -r
于 2012-09-07T14:40:14.950 回答
133

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

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

(或替换originbitbucket。)

请在此处阅读:10.5 Git Internals - The Refspec

于 2012-09-07T15:17:10.397 回答
65

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

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

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

fetch = +refs/heads/*:refs/remotes/origin/*
于 2017-07-26T09:08:24.753 回答
27

我遇到过同样的问题。似乎最简单的解决方案是删除遥控器,读取它并获取。

于 2014-04-15T07:43:49.230 回答
13

不幸的是,如果您还没有执行“git fetch”,请不要向您显示所有远程git branch -a分支git branch -r

git remote show origin始终如一地工作。还git show-ref显示 Git 存储库中的所有引用。但是,它就像git branch命令一样工作。

于 2018-01-07T13:21:45.427 回答