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 update
, git pull
, git fetch --all
, git 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
今天我有一个回购问题。
根据顶级解决方案,它不是+refs/heads/*:refs/remotes/origin/*
问题。
症状只是简单地说, git fetch origin
或git fetch
只是没有出现任何事情,尽管有远程分支需要读取。
尝试了很多东西之后,我将远程原点删除并重新创建。 这似乎修复了它。 不知道为什么。
删除: git remote rm origin
并使用以下命令重新创建: git remote add origin <git uri>