作者:mobiledu2502856411 | 来源:互联网 | 2023-05-22 18:09
我有一个大的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.
所以,远程仓库中还没有主分支,但我正试图推动它并且它失败了.
我该如何解决?或者我如何在遥控器上创建一个空的主分支,以便我可以推送它?
1> hobbs..:
推到refs/heads/master
这一次.
git push origin whatever:refs/heads/master
这将明确地创建它作为一个分支,你将来能够正常推动它.
这是有效的,因为没有名为master的远程ref(它还没有被创建),目标ref没有完全限定refs /所以git无法根据它进行计算,而源ref是一个哈希而不是一个名字,所以它也无法根据这个来弄明白.通过推送到refs/heads/master,它可以正常工作,因为第二个条件为真,然后在遥控器上存在master,所以第一个条件为真
@hobbs你能解释一下这个问题是如何/为何起作用的,以及为什么问题首先存在?你的解决方案解决了问题,但我不知道为什么:X
@xapple`git push origin无论如何:refs/heads/master`
@sleepycal确切原因在于错误消息.没有名为`master`的远程引用(它还没有被创建),目标引用不是完全限定的`refs /`所以git无法根据它来解决它,而源ref是一个哈希而不是名称,所以它也无法根据它来弄清楚.通过推送到`refs/heads/master`它可以工作,因为第二个条件为真,然后在遥控器上存在`master`,所以第一个条件为真.
@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
的远程参考。(太糟糕了,名字不能更好地相互反映。)