推送大型github仓库失败,"无法推送到不合格的目的地:主人"

Mau*_*res 62 git github

我有一个大的git repo(从SVN repo创建),我想将它推送到github.鉴于它很大,我不能只是尝试直接推送它,因为它失败了"包太大"的错误.

到目前为止一切都很好,我可以一次推回一个回购.但是当我尝试这样做时会发生什么:

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.
Run Code Online (Sandbox Code Playgroud)

所以,远程仓库中还没有主分支,但我正试图推动它并且它失败了.

我该如何解决?或者我如何在遥控器上创建一个空的主分支,以便我可以推送它?

hob*_*bbs 115

推到refs/heads/master这一次.

git push origin whatever:refs/heads/master

这将明确地创建它作为一个分支,你将来能够正常推动它.

这是有效的,因为没有名为master的远程ref(它还没有被创建),目标ref没有完全限定refs /所以git无法根据它进行计算,而源ref是一个哈希而不是一个名字,所以它也无法根据这个来弄明白.通过推送到refs/heads/master,它可以正常工作,因为第二个条件为真,然后在遥控器上存在master,所以第一个条件为真

  • @hobbs你能解释一下这个问题是如何/为何起作用的,以及为什么问题首先存在?你的解决方案解决了问题,但我不知道为什么:X (15认同)
  • @xapple`git push origin无论如何:refs/heads/master` (5认同)
  • @sleepycal确切原因在于错误消息.没有名为`master`的远程引用(它还没有被创建),目标引用不是完全限定的`refs /`所以git无法根据它来解决它,而源ref是一个哈希而不是名称,所以它也无法根据它来弄清楚.通过推送到`refs/heads/master`它可以工作,因为第二个条件为真,然后在遥控器上存在`master`,所以第一个条件为真. (2认同)
  • @sleepycal https://git-scm.com/book/zh-cn/v2/Git-Internals-Git-References讨论在您的.git / refs中看到的三种参考类型:头部,标签和遥控器。@hobbs提到了为什么git无法推断远程更新中应该更新或创建的引用。您可以使用以下命令列出当前已知的参考:loc show的git show-ref,包括它知道的任何远程参考,以及git的ls-remote <remoterepo>的远程参考。(太糟糕了,名字不能更好地相互反映。) (2认同)