104

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

在此处输入图像描述

我正在尝试从在线 GitHub 存储库上的 DownloadManager 中提取。我努力了

  • git pull,但它抱怨不知道从哪个分支拉
  • git pull origin,不知道哪个分支
  • git pull origin 下载管理器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 中,当我尝试连接到存储库时,什么也没有出现。我过去一直能够推动它。但是在我拉出最近的更改之前,我不能再次推动。

4

16 回答 16

95

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

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

您有以下选择:

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

    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 -u--set-upstream-to的缩写形式,这与弃用的 --set-upstream有点不同)

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

    git config --local -e

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

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

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

git pull

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

于 2012-07-19T09:56:41.780 回答
19

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

git remote add origin 'url_of_your_github_project'

git push -u origin master
于 2015-05-16T18:12:21.763 回答
10

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

git branch -vv

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

git pull origin BranchName 

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

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

git pull origin DownloadManager
于 2016-02-24T06:24:44.783 回答
10

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

于 2019-02-22T10:40:40.687 回答
8

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

于 2018-01-04T06:14:21.020 回答
5

If the remote branch was deleted (or renamed), then you might get such error when trying to fetch that old-branch:

$ git fetch --prune --all

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

Check your local git config if it still refers to the 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

Removing the old refs entries, can fix the fetch problem:

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

$ git fetch --prune --all
  Fetching origin
  ...
   * branch            HEAD       -> FETCH_HEAD
于 2021-04-21T16:49:51.147 回答
5

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

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

于 2021-03-18T15:49:45.567 回答
2

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

尝试:

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

更新:

不再支持“--set-upstream”选项。

git branch --set-upstream-to downloadmanager origin/DownloadManager
git pull
于 2012-07-19T09:19:44.873 回答
2

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

所以不要使用,

git pull origin master

你可以使用,

git pull origin main
于 2021-09-06T10:20:06.387 回答
1

这是因为你的远程分支名称是“DownloadManager”,我猜当你签出你的分支时,你给这个分支一个新的名字“downloadmanager”。

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

于 2012-07-19T09:16:47.623 回答
1

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

于 2019-05-28T12:12:05.123 回答
0

就我而言,我在本地分支中有一个从服务器中删除的分支

只需将其从本地分支机构中删除,然后 pull 将按预期工作

于 2022-02-11T09:46:53.613 回答
0

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

于 2021-04-27T16:52:20.000 回答
0

ABC-100就我而言,当我这样做时,我在分支上弄错了大写字母git checkout abc-100,然后我开始工作。我的解决方案是将代码从abc-100intoABC-100然后删除abc-100

于 2021-08-12T09:27:28.100 回答
-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

于 2020-04-19T02:51:01.323 回答
-2

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

于 2021-06-29T10:38:03.183 回答