git pull remote branch找不到远程ref

时间:2012-07-19 00:41:30

标签: git

我不确定为什么这不起作用。当我git branch -a时,这就是我所看到的:

enter image description here

我正试图从在线GitHub存储库上的DownloadManager中取出。我试过了

  • git pull,但后来抱怨不知道从哪个分支拉
  • git pull origin,不知道哪个分支
  • 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中,当我尝试连接到存储库时,没有任何东西出现。我过去曾能够推动它。但是,在我拉出最近的变化之前,我无法再次推动。

13 个答案:

答案 0 :(得分:45)

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

假设您现在位于本地分支 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

        (注意,因为git 1.8 for branch 命令 -u - set-upstream-to 的缩写形式,这是与已弃用的 - set-upstream

        略有不同

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

        git config --local -e

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

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

      2. 在完成上述任何步骤之后,您可以轻松使用:

        git pull

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

答案 1 :(得分:6)

Git中的分支名称区分大小写。要查看Git'所看到的分支机构的名称。 (包括正确的套管),使用:

git branch -vv

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

git pull origin BranchName 

其中' BranchName'是你的分支的名称。确保您正确匹配案例

所以在OP(原始海报' s)案例中,命令将是:

git pull origin DownloadManager

答案 2 :(得分:2)

发生此错误是因为本地存储库无法在第一时间识别远程分支。所以你需要先做。可以使用以下命令完成:

git remote add origin 'url_of_your_github_project'

git push -u origin master

答案 3 :(得分:2)

如果远程分支被删除(或重命名),那么在尝试获取那个 old-branch 时可能会遇到这样的错误:

$ git fetch --prune --all

  Fetching origin
  fatal: couldn't find remote ref refs/heads/old-branch
  error: Could not fetch origin

检查您的本地 git 配置是否仍然引用 old-branch

  $ git config --get-all remote.origin.fetch

    +refs/heads/*:refs/remotes/origin/*
    +refs/heads/old-branch:refs/remotes/origin/old-branch
    +refs/heads/master:refs/remotes/origin/master

删除旧的 refs 条目,可以解决 fetch 问题:

$ git config --unset-all remote.origin.fetch

$ git fetch --prune --all
  Fetching origin
  ...
   * branch            HEAD       -> FETCH_HEAD

答案 4 :(得分:1)

这是因为你的远程分支名称是“DownloadManager”,我想当你结帐你的分支时,你给这个分支一个新名称“downloadmanager”。

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

答案 5 :(得分:1)

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

尝试:

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

答案 6 :(得分:1)

对我来说,这是因为我试图拉出一个已经从Github删除的分支。

答案 7 :(得分:1)

如果这些答案都不起作用,那么我将首先在您的<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="container"> <div class="uc_breadcrumb_block"> <ul class="breadcumb"> <li>item1</li> <li>item2</li> <li>item3</li> <li>item4</li> <li>item5</li> <li>item6</li> </ul> </div> </div>文件中查找对引起问题的分支的引用,然后将其删除。

答案 8 :(得分:0)

检查您的仓库中的分支。也许有人删除它。

答案 9 :(得分:0)

我遇到了同样的问题,因为 GitHub 将默认分支名称从 master 更改为 main 所以 Git pull origin master 对我不起作用。

试试这个
Git pull origin main 如果问题是由于分支名称冲突引起的,这将拯救您。

答案 10 :(得分:0)

对我来说它失败了,因为我的远程分支丢失了(它在之前的合并运行中被删除了。)

答案 11 :(得分:-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

答案 12 :(得分:-2)

在我自己的情况下,我只是将“主”更改为“主”,并且能够从远程存储库中提取。