【问题标题】:Pushing a large github repo fails with "unable to push to unqualified destination: master"推送大型 github 存储库失败并显示“无法推送到不合格的目的地:master”
【发布时间】:2015-04-09 16:03:37
【问题描述】:

我有一个大型 git 存储库(从 SVN 存储库创建),我想将它推送到 github。鉴于它很大,我不能直接尝试推送它,因为它会因“pack too large”错误而失败。

到目前为止一切顺利,我可以一次将 repo 推送一个提交。但是当我尝试这样做时,会发生什么:

git push origin 86c310d8a680d6d0e052fa7db89adb25348f3e54:master
error: unable to push to unqualified destination: master
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.

所以,远程仓库还没有 master 分支,但我正在尝试推送它,但它失败了。

我该如何解决这个问题?或者如何在远程创建一个空的 master 分支以便推送到它?

【问题讨论】:

    标签: git github


    【解决方案1】:

    推送到refs/heads/master,就这一次。

    git push origin whatever:refs/heads/master

    这将明确地将其创建为一个分支,并且您将来可以正常推送到它。

    这是可行的,因为没有名为 master 的远程 ref(它尚未创建),目标 ref 不完全符合 refs/ 所以 git 无法根据它来计算它,而源 ref是一个哈希而不是一个名称,所以它也无法根据它来计算。通过推送到 refs/heads/master 它可以工作,因为第二个条件为真,然后 master 存在于遥控器上,所以第一个条件为真

    【讨论】:

    • @hobbs 您能否进一步解释一下它是如何/为什么起作用以及为什么首先存在问题?您的解决方案解决了问题,但我不知道为什么:X
    • 推送到refs/heads/master是什么意思,你执行的命令是什么?
    • @xapple git push origin whatever:refs/heads/master
    • @sleepycal 确切原因在错误消息中。没有名为master 的远程引用(它尚未创建),目标引用不是完全符合refs/ 的,所以git 无法根据它来计算,源引用是一个哈希而不是一个名字,所以它也无法根据它来计算。通过推送到refs/heads/master,它可以工作,因为第二个条件为真,然后master 存在于遥控器上,因此第一个条件为真。
    • @sleepycal git-scm.com/book/en/v2/Git-Internals-Git-References 讨论了在您的.git/refs 中看到的 3 种类型的引用:heads、tags 和 remotes。 @hobbs 提到了为什么 git 无法推断 ref 应该在远程仓库中更新或创建的内容。您可以使用这些命令列出当前已知的参考:git show-ref 用于您的 loco 存储库,包括它知道的任何远程参考,git ls-remote <remoterepo> 用于远程参考。 (太糟糕了,名字不能更好地相互反映。)
    【解决方案2】:

    这对我有用:我在 github UI 上创建了远程分支,然后推送了与它同名的本地分支。如果其他方法不起作用,请尝试一下。其他方法是在本地创建一个新分支并推送一个空分支,然后选择您的提交并再次推送到您的远程。

    检查这个以及类似的问题: When deleting remote git branch "error: unable to push to unqualified destination"

    【讨论】:

      【解决方案3】:

      你也可以用

      创建一个新的分支
      git checkout -b branchName
      

      然后将你的 git 仓库推送到那个分支

      git push origin whatever:branchName
      

      【讨论】:

        【解决方案4】:

        我遇到了同样的错误,发现我的分支名称拼写错误。所以你会发现仔细检查分支名称以确保任何大写字母等都在正确的位置。

        【讨论】:

          猜你喜欢
          • 2016-07-12
          • 2023-03-03
          • 2017-08-22
          • 2011-11-24
          • 2021-11-27
          • 1970-01-01
          • 2021-01-08
          • 2018-05-02
          • 2011-12-09
          相关资源
          最近更新 更多