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

fea*_*gal 128 git

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

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

 $ git branch -a  
 * master 
 localbranch1
 localbranch2
 remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

$ git branch -r
origin/master

在用于bitbucket的web ui中,我可以看到他所创建的分支.任何帮助/建议/方向将是最受欢迎的.谢谢.

您需要的任何进一步信息.

编辑1

$ git fetch bitbucket
Password for 'https://xxxxx@bitbucket.org':
From https://bitbucket.org/user/repo
 * branch            HEAD       -> FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

如果他创建的分支名为new_branch_b,我应该期待看到:

$ git branch -r    
origin/master 
origin/new_branch_b
Run Code Online (Sandbox Code Playgroud)

编辑2

$ 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
Run Code Online (Sandbox Code Playgroud)

编辑3

[remote "bitbucket"]
url = https://user@bitbucket.org/user/repo.git
Run Code Online (Sandbox Code Playgroud)

我打电话给远程bitbucket而不是原点(至少这是我记得的,我刚刚设置它)

编辑4

我按照kan的回答更新了bitbucket远程配置.

$ git config -e

[remote "bitbucket"]
    url = https://user@bitbucket.org/user/repo.git
    fetch = +refs/heads/*:refs/remotes/bitbucket/*
Run Code Online (Sandbox Code Playgroud)

对于大多数人来说,它将被称为原产地

[remote "origin"]
    url = https://user@bitbucket.org/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)

然后

$ 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
Run Code Online (Sandbox Code Playgroud)

.... 等等.

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

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

Bru*_*uno 200

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

$ git remote update
$ git branch -r
Run Code Online (Sandbox Code Playgroud)

  • 这没有帮助。 (12认同)
  • 我在 Win 上使用 GitHub 客户端,有时它不会更新远程分支。第一行“git remote update”就像一个魅力。简单干净 (2认同)
  • 在`git remote update` 之后,我可以在 UI 中看到新的分支。谢谢 (2认同)

kan*_*kan 100

remote部分还指定了提取规则.你可以添加类似的东西:

fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)

从远程获取所有分支.(或替换origin通过bitbucket).

请在此处阅读:https://git-scm.com/book/en/v2/Git-Internals-The-Refspec

  • 您需要编辑的文件是`.git/config` (4认同)
  • 这解决了我在Git中持续数周的分支问题.突然间,所有的git远程更新实际上都开始工作了.谢谢! (3认同)
  • 出于某种原因,它看起来像:`fetch = + refs/heads/master:refs/remotes/origin/master` for me.用`*`替换`master`修复了我的问题. (2认同)
  • 如果您已将浅层克隆转换为unshallow,这非常有用. (2认同)

Don*_*lie 26

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

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

fetch = +refs/heads/master:refs/remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用“git config -e”编辑配置 (6认同)
  • 谢谢!您的回答实际上可以轻松解决问题,并且似乎是正确的方法。但是你应该添加配置文件在`.git/config`中,以便人们可以找到它。 (4认同)

jes*_*cah 18

我遇到过同样的问题.似乎最简单的解决方案是只删除遥控器,重新添加它,然后获取.

  • ```git remote -v``` 将显示您的遥控器,以便您可以获取 url,```git remote rm origin``` 将删除它,```git remote add origin <url>` ` 将重新添加它。 (8认同)

Thu*_*han 5

不幸的是git branch -agit branch -r你不显示所有远程分支机构,如果你还没有执行的“混帐提取”。git remote show origin一直持续工作。还git show-ref显示git repo中的所有引用。但是它就像git branch命令一样工作