git pull remote branch找不到远程ref

Cry*_*tal 53 git

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

在此输入图像描述

我正试图从在线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中,当我尝试连接到存储库时,没有任何东西出现.我过去曾能够推动它.但是在我拉最近的变化之前,我无法再次推动.

rad*_*tao 53

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

假设你现在在本地分支下载管理器(git checkout downloadmanager)

你有下一个选择:

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

    git pull origin DownloadManager

    要么

    git pull origin downloadmanager:DownloadManager


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

    git push -u origin DownloadManager

    (-u--set-upstream的缩写形式)

    这将持续下载管理器:自动配置下载管理器链接(结果与下一步相同).


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

    git branch -u downloadmanager origin/DownloadManager

    (注意,因为分支命令-u的 git 1.8 是--set-upstream-to的缩写形式,这与不推荐使用的--set-upstream有点不同)

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

    git config --local -e

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

    [branch "downloadmanager"]
            remote = origin
            merge = refs/heads/DownloadManager
    
    Run Code Online (Sandbox Code Playgroud)

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

git pull

如果您使用TortoiseGit:RightClick on repo - > TortoiseGit - > Settings - > Git - > Edit local .git/config

  • 就像更新一样,现在`--set-upstream`被弃用,而不是`--set-upstream-to`或`--track` (2认同)

Noa*_*nos 24

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

$ git fetch --prune --all

  Fetching origin
  fatal: couldn't find remote ref refs/heads/old-branch
  error: Could not fetch origin
Run Code Online (Sandbox Code Playgroud)

检查本地 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
Run Code Online (Sandbox Code Playgroud)

删除旧的引用条目,可以解决获取问题:

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

$ git fetch --prune --all
  Fetching origin
  ...
   * branch            HEAD       -> FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)


Sau*_*hra 17

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

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


UWU*_*DUN 15

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

git remote add origin 'url_of_your_github_project'

git push -u origin master
Run Code Online (Sandbox Code Playgroud)

  • `git push -u origin main` 对我来说是 `main` 而不是 `master` (4认同)
  • 我有一个致命的错误:远程来源已经存在。 (3认同)

rub*_*o77 10

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

  • 谢谢,这就是给我的。 (2认同)

Chr*_*row 7

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

git branch -vv
Run Code Online (Sandbox Code Playgroud)

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

git pull origin BranchName 
Run Code Online (Sandbox Code Playgroud)

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

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

git pull origin DownloadManager
Run Code Online (Sandbox Code Playgroud)

  • 区分大小写引起了我的问题。 (2认同)

Nil*_*eve 6

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


Nir*_*ake 5

就我而言,此错误是由于 Github 对默认分支从master到 进行的命名更改而发生的main

所以不要使用,

git pull origin master
Run Code Online (Sandbox Code Playgroud)

您可以使用,

git pull origin main
Run Code Online (Sandbox Code Playgroud)