git fetch不会获取所有分支

我已经克隆了一个存储库,之后有人创建了一个新的分支,我想开始工作。 我阅读手册,看​​起来很简单。 奇怪的是它不工作,我发现的所有帖子都表明我正在做正确的事情。 所以我会让自己受到鼓励,因为肯定会有一些明显的错误:

正确的行动似乎是

git fetch
git branch -a
* master
  remotes/origin/HEAD --> origin/master
  remotes/origin/master
git checkout -b dev-gml origin/dev-gml

此时有一个问题,出于某种原因在git fetch我看不到dev-gml远程分支。 为什么不? 如果我新鲜地克隆仓库,它就在那里,所以当然远程分支存在:

$ mkdir ../gitest
$ cd ../gitest
$ git clone https://github.com/example/proj.git
Cloning into proj...
remote: Counting objects: 1155, done.
remote: Compressing objects: 100% (383/383), done.
remote: Total 1155 (delta 741), reused 1155 (delta 741)
Receiving objects: 100% (1155/1155), 477.22 KiB | 877 KiB/s, done.
Resolving deltas: 100% (741/741), done.
$ cd projdir
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev-gml
  remotes/origin/master

我已经尝试了git updategit pullgit fetch --allgit pretty-please git fetch --all git pretty-please尽可能地将所有可能的排列组合在一起...


检查remote.origin.fetch设置时可以看到问题
(以$开头的行是使用我输入的命令的bash提示符,其他行是结果输出)

$ git config --get remote.origin.fetch
+refs/heads/master:refs/remotes/origin/master

正如你所看到的,就我而言,遥控器被设置为专门和唯一地获取主分支。 我按照下面的内容对其进行了修正,包括检查结果的第二个命令。

$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*

通配符*当然意味着在该路径下的一切。

不幸的是,在我已经挖掘并通过反复试验找到答案后,我看到了这个评论。


要将(新)远程分支作为本地分支进行跟踪:

git checkout -b <local branch> <remote>/<remote branch>

或者(有时如果没有额外的remotes/它将无法工作):

git checkout -b <local branch> remotes/<remote>/<remote branch>

编辑:你需要运行git remote update或者git remote update <remote> 。 然后你可以运行git branch -r来列出远程分支。

有用的git cheatsheets

  • Git Cheat Sheet(我个人最喜欢的)
  • 一些关于git的笔记
  • Git Cheat Sheet(pdf)

  • 今天我有一个回购问题。

    根据顶级解决方案,它不是+refs/heads/*:refs/remotes/origin/*问题。

    症状只是简单地说, git fetch origingit fetch只是没有出现任何事情,尽管有远程分支需要读取。

    尝试了很多东西之后,我将远程原点删除并重新创建。 这似乎修复了它。 不知道为什么。

    删除: git remote rm origin

    并使用以下命令重新创建: git remote add origin <git uri>

    链接地址: http://www.djcxy.com/p/3837.html

    上一篇: git fetch doesn't fetch all branches

    下一篇: Remote branch not showing up in "git branch