git pull远程分支找不到远程引用


78

我不确定为什么这行不通。当我这样做时git branch -a,这是我看到的:

在此处输入图片说明

我正在尝试从在线GitHub存储库上的DownloadManager中提取信息。我试过了

  • git pull,但随后它抱怨不知道从哪个分支中提取
  • git pull的起源,不知道哪个分支
  • git pull origin downloadmanager fatal: Couldn't find remote ref downloadmanager. Unexpected end of commands stream
  • git pull origin remotes / origin / DownloadManager 'fatal couldn't find remote ref remotes/origin/DownloadManager. Unexpected end of commands stream

有什么我想念的吗?在Xcode中,当我尝试连接到存储库时,什么都没有显示。过去,我一直可以坚持下去。但是直到我完成最新更改后,我才能再次推送。


9
怎么git pull origin DownloadManager
Felix Kling

您的本地downloadmanager分支是远程下载管理器的跟踪分支吗?这是您可以检查的方式
R0MANARMY

@Felix Kling起作用了。您是否想回答,以便我可以回答我的问题?因此,是否区分大小写?
2012年

对于寻找该问题的另一个答案的所有人git pull remote branch cannot find remote ref:检查您的远程分支是否已删除。为确保在本地拥有当前状态,请git fetch--prune origin标志执行操作
chrissharkman

Answers:


77

小心-本地分支和远程分支之间混合使用大小写!

假设您现在在本地分支downloadmanager中git checkout downloadmanager

您还有下一个选择:

  1. 每次都在pull / push命令中指定远程分支(区分大小写):

    git pull origin DownloadManager

    要么

    git pull origin downloadmanager:DownloadManager


  1. 在下一次推送时指定跟踪分支:

    git push -u origin DownloadManager

    -u--set-upstream的缩写)

    这将自动在配置中永久保留downloadmanager:DownloadManager链接(相同结果,下一步)。


  1. 在git config默认远程跟踪分支中设置:

    git branch -u downloadmanager origin/DownloadManager

    (请注意,由于分支命令-u的git 1.8是--set-upstream-to的缩写,因此与已弃用的--set-upstream略有不同)

    或手动编辑配置(我更喜欢这种方式):

    git config --local -e

    ->这将打开编辑器。在下面添加块(猜测,在“ master”块之后):

    [branch "downloadmanager"]
            remote = origin
            merge = refs/heads/DownloadManager
    

在执行任何这些步骤之后,您可以轻松使用:

git pull

如果您使用TortoiseGit:右键单击仓库-> TortoiseGit->设置-> Git->编辑本地.git / config


3
作为更新,如今--set-upstream不赞成使用--set-upstream-to--track
Pioneer Skies

谢谢曼,它有很大的帮助。我没有时间要向我展示我的代码,并且已经弄乱了以前的存储库。再次感谢。
Ozzius

10

Git中的分支名称区分大小写。要查看Git“看到”的分支名称(包括正确的大小写),请使用:

git branch -vv

...,现在您可以看到要使用的正确分支名称,请执行以下操作:

git pull origin BranchName 

其中“ BranchName”是您的分支的名称。确保您正确匹配大小写

因此,在OP(原始海报)的情况下,命令将是:

git pull origin DownloadManager

区分大小写引起了我的问题。
曾伟石

9

发生此错误的原因是,本地存储库第一次无法识别远程分支。因此,您需要先执行此操作。可以使用以下命令来完成:

git remote add origin 'url_of_your_github_project'

git push -u origin master

8

如果这些答案都不起作用,那么我将首先在您的.git/config文件中查找对引起问题的分支的引用,然后将其删除。


谢谢,这是给我的。
PerpetualStudent



2

您需要将本地分支设置为跟踪远程分支,如果它们的大小写不同,它将不会自动执行。

尝试:

git branch --set-upstream downloadmanager origin/DownloadManager
git pull

更新:

不再支持'--set-upstream'选项。

git branch --set-upstream-to downloadmanager origin/DownloadManager
git pull

1

这是因为您的远程分支名称是“ DownloadManager”,我猜您在结帐分支时会给该分支一个新名称“ downloadmanager”。

但这只是您的本地名称,而不是远程引用名称。


-1

重新启动后,我重新打开VSCode的最后一个副本时遇到了这个问题。上面的修复不起作用,但是当我通过资源管理器关闭并重新打开VSCode时,它起作用了。这是我执行的步骤:

//received fatal error
git remote remove origin
git init
git remote add origin git@github:<yoursite>/<your project>.git
// still received an err 
//restarted VSCode and folder via IE 
//updated one char and resaved the index.html  
git add .
git commit -m "blah"
git push origin master

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.