Git 拉远程分支找不到远程引用

我不知道为什么这个不起作用。当我做 git branch -a的时候,我看到的是:

enter image description here

我正试图从在线 GitHub 存储库的 DownloadManager 下载

  • Git pull,但是它会抱怨不知道从哪个分支上拉
  • Git 拉起源,不知道哪个分支
  • 下载管理器
  • Git 拉源远程/源/下载管理器 'fatal couldn't find remote ref remotes/origin/DownloadManager. Unexpected end of commands stream

有什么我不知道的吗?在 Xcode,当我试图连接到存储库时,什么都没有显示。我过去一直能够推动它。但是我不能再推了,除非我把最近的变化都拉出来。

535138 次浏览

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

但这只是您的本地名称,不是远程裁判名称。

您需要设置本地分支来跟踪远程分支,如果它们有不同的大小写,则不会自动这样做。

试试:

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

UPDATE:

不再支持“设置上游”选项。

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

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

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

你还有下一个选择:

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

    git pull origin DownloadManager

    或者

    git pull origin downloadmanager:DownloadManager


  1. Specify tracking branch on next push:

    git push -u origin DownloadManager

    ( is a short form of 逆流而上)

    这将在配置中自动保持 下载管理器: DownloadManager链接(与下一步相同的结果)。


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

    git branch -u downloadmanager origin/DownloadManager

    (注意,因为针对 树枝的 git 1.8命令 上游的简写形式,与不推荐的 逆流而上略有不同)

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

    git config --local -e

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

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

and after any of those steps you can use easily:

git pull

If you use TortoiseGit: RightClick on repo -> TortoiseGit -> Settings -> Git -> Edit local .git/config

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

git remote add origin 'url_of_your_github_project'


git push -u origin master

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

git branch -vv

... 现在你可以看到正确的分支名称使用,这样做:

git pull origin BranchName

where 'BranchName' is the name of your branch. Ensure that you match the case correctly

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

git pull origin DownloadManager

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

如果这些答案都不起作用,我将首先在 .git/config文件中查找引用导致问题的分支的信息,然后删除它们。

检查一下你回购的分行,也许有人会删掉它。

我有这个问题后,重新启动和 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

I faced the same issue because GitHub changed the default branch name from master to main 所以 git pull origin master对我不起作用。

试试这个
git pull origin main 如果问题是由于分支名称冲突引起的,这将节省您的时间。

如果远程分支被删除(或重命名) ,那么在尝试获取该 老树枝时可能会出现这样的错误:

$ git fetch --prune --all


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

检查本地 git 配置是否仍然引用 老树枝:

  $ 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 条目可以解决提取问题:

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


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

For me it was failing because my remote branch was missing (it was deleted on previous merge run.)

在我自己的例子中,我只是将“ master”更改为“ main”,然后就可以从远程回购中进行拉取。

In my case I had got the capitalisation wrong on the branch ABC-100 when I did git checkout abc-100 which I then worked on. My solution was to merge code from abc-100 into ABC-100 and then delete abc-100.

在我的示例中,这个错误是由于 Github 对从 mastermain的默认分支的命名更改造成的

所以我没有用,

git pull origin master

你可以用,

git pull origin main

In my case I had a branch in my local branches that was removed from the server

只要把它从当地的分支机构中移除,然后就可以按预期的方式运行了

这个问题发生在我身上,因为(我认为)有人试图从我们服务器上的一个文件夹中克隆一个存储库到同一个文件夹中。这创造了一个“。存储库中的 git”文件夹,我试图克隆这个文件夹,但破坏了所有文件夹。删除。Git”文件夹中的回购我想克隆修复它。

有可能您创建了一个新的回购,但是没有使用它创建一个 readme.md。这可能导致在线回购没有默认的分支集。您可以在 github 或 gitlab 中手动添加 readme.md,然后应该创建一个 master/main 分支。

您还可以在设置中设置默认分支。在我的情况下,我不能做后者,所以我必须做第一个,然后我能够推到原点-主。

嗨,多亏了这些评论,我刚刚解决了这个问题。我是一个新手,所以只是一个小小的补充,因为这个问题在7年前就已经解决了。 git 和 Github 中“主分支”的新标准不再是 master,而是 main。这个标准在旧代码的堆栈溢出上产生了一些坏的部分,你可以在这里看到 Github 的声明: < a href = “ https://Github.com/Github/Renaming”rel = “ nofollow norefrer”> 从 master 重命名默认分支

因此,假设您正在使用 Git Bash,那么首先用 git show-ref验证用什么名称管理您的“主要分支”。如果你正在看一本老教程或老书,这可能是原因。

看起来应该是:

$ git show-ref
3fba1252f165a909f14dd63e1177c543659dffd6 refs/heads/**main**
9264e8f4193fa1be7ccb5780059bc67f68cf107e refs/remotes/origin/**main**

如果你看到 master在其中之一改为 main,如果不跳过这一部分:

$ git branch -m master main
$ git push -u origin main

不管怎样,对我有用的是:

$ git pull origin main --allow-unrelated-histories
$ git push -u origin main

规范上的这个错误是由于您试图从中提取的分支中出现了拼写错误或者分支名称不存在造成的。

最近 GitHub 将默认分支名称从 master 更改为 main。

对我来说,情况并非如此。

我使用的分支名称与我的用户名相同。 然后,我必须首先向分支推送,然后发出一个 pull 请求,该请求从我的分支合并到一个完整的、更新的分支,之后我开始发出的 pull 请求工作得很好。