【问题标题】:git pull displays "fatal: Couldn't find remote ref refs/heads/xxxx" and hangs upgit pull 显示“致命:找不到远程 ref refs/heads/xxxx”并挂断
【发布时间】:2011-10-19 07:09:18
【问题描述】:

我创建了一个名为“6796”的分支,然后我将它推送到远程,在另一台机器上检查它,进行其他编辑,推送它,然后将其与主服务器合并,并在本地和远程删除它 (@987654321 @) - 在另一台机器上。现在,当我运行git pull

fatal: Couldn't find remote ref refs/heads/6796
user@host:~/path/to/repo$ fatal: The remote end hung up unexpectedly

git pull origin master 工作正常。在我看来,有一些 6796 参考挂断...如何解决这个问题?

【问题讨论】:

    标签: git


    【解决方案1】:

    可能有一些命令可以解决它,但我会首先在您的 .git/config 文件中查找对该分支的引用,然后将其删除。

    【讨论】:

    • 谢谢!我在 .git/config 中有这条线:[remote "origin"] fetch = +refs/heads/6796:refs/remotes/origin/6796 我猜这条线在那里是因为我删除了远程分支并从另一台服务器上修剪了它;所以在那台服务器上 git 知道删除,并删除了 .git/config 中的行,但是这里 git 没有收到有关删除的通知。非常感谢!
    • @jweyrich 提供的prune 选项可以很好地“刷新”原始状态
    • 在你的根目录中寻找 .gitconfig
    【解决方案2】:

    您还必须删除本地分支:

    git branch -d 6796
    

    另一种方法是从本地存储库中删除所有过时的分支。这将删除所有已从远程删除的本地分支:

    git remote prune origin --dry-run
    

    【讨论】:

    • 这是一个好方法(git remote prune)。 git是否有可能删除远程仍然存在的东西?我的意思是这个命令是危险的还是它只修剪已经从远程删除的分支
    • @NickSoft,引用official documentationDeletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>". With --dry-run option, report what branches will be pruned, but do no actually prune them.
    【解决方案3】:

    当我尝试提交一个名为 "." 的新创建的存储库时,我遇到了类似的问题。我已经看到其他几个人在放置“。”时遇到不同的问题。在 repo 名称中。

    我刚刚重新创建了回购和

    replaced "." with "-"
    

    可能有其他方法可以解决这个问题,但这对我来说是一个快速的解决方案,因为它是一个新的 repo。

    【讨论】:

    • 你的名字是什么意思?
    【解决方案4】:

    当我尝试在名称中添加单引号 ' 时,我遇到了类似的问题。

    我不得不转义拉取请求名称:

    git pull https://github.com/foo/bar namewithsingle"'"quote
    

    【讨论】:

      【解决方案5】:

      以下情况也可能引发此错误。

      您想从远程存储库中签出名为 feature 的分支,但由于您的本地存储库中已经有名为 feature/<feature_name> 的分支,因此引发了错误。

      只需以不同的名称签出 feature 分支:

      git checkout -b <new_branch_name> <remote>/feature
      

      【讨论】:

        【解决方案6】:

        要在本地拉取远程分支,我执行以下操作:

        git checkout -b branchname // 创建一个同名的本地分支并检查它

        git pull origin branchname // 将远程的拉到本地的

        我唯一一次这样做但没有成功,我删除了 repo,再次克隆它并重复上述 2 个步骤;成功了。

        【讨论】:

          【解决方案7】:

          我有同样的错误。问题是分支被删除,释放。但在 PhpStorm 中,我仍然可以在远程分支中看到它。我可以结帐为当地分支机构。然后执行 git pull 会出现此错误。

          所以需要检查这个分支是否真的存在于远程。

          【讨论】:

            【解决方案8】:

            我有同样的问题。但就我而言,这是由于我的分支机构的名称。分支的名称在我的 GitHub 存储库中自动设置为 main 而不是 master。

            git pull origin master 
            

            (没用)。

            我在 GitHub 中确认了分支的名称是否实际上是 master 并发现实际名称是 main。所以下面的命令对我有用。

            git pull origin main 
            

            【讨论】:

            【解决方案9】:

            就我而言,它发生在 master 分支上。后来发现我对项目的访问权限被项目经理不小心撤销了。为了进行交叉检查,我访问了审查网站,并没有看到该分支和其他对该项目的任何提交。

            【讨论】:

              【解决方案10】:

              在我的情况下,默认选中的是“轻量级结帐”复选框,而碰巧的是,我需要取消选中它。你能看出来吗?

              我没有调查为什么它会导致如此突然的错误,但由于它阻止了我的 Jenkins 工作几个小时,我觉得值得在这里分享其他答案。

              【讨论】:

                猜你喜欢
                • 2011-05-14
                • 2018-03-11
                • 2022-10-24
                • 2019-10-26
                • 1970-01-01
                • 2022-08-15
                • 2010-12-02
                • 2013-02-20
                • 1970-01-01
                相关资源
                最近更新 更多