如何只将最后一次提交推送到新添加的空存储库?

时间:2017-11-28 23:22:43

标签: git github heroku push commit

我有一个origin存储库,有85个提交。我也在这个项目Heroku远程存储库和第三个新添加的test空存储库中。我想将test存储库推送到我的最新提交。我尝试使用git push test 77feq3231bc0fd432233214af3e224ds397397: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.
error: failed to push some refs to 'git@github.com:myuser/test.git'

任何想法我该如何解决?

1 个答案:

答案 0 :(得分:0)

如果没有将提交的所有历史记录推送到提交,导致另一端没有提交,则无法推送提交。

那就是说,你出错的地方是一个简单的语法问题。你只需要写:

git push test <hash>:refs/heads/master

为什么会这样

考虑:

git push $remote $hash:master

(其中$remote是远程名称,如test或原始URL,$hash是提交哈希ID)。你的Git只知道有一个对象ID,$hash,它应该发送给另一个Git。然后它应该要求另一个Git为该哈希ID设置一个引用名称。您提供的参考名称为master - 但是refs/heads/master分支名称吗?或者是refs/tags/master标记名称?还是完全是其他名字?

你的Git也会查看所有他们的 Git的参考资料。但test存储库为空且没有引用,因此您的Git在那里找不到refs/heads/master,因此无法将其用作全名。

通常,您的Git会在:左侧侧看到这一点,例如,git push test xyzzy:master会让您的Git查找名称xyzzy 。这将是一个分支名称 - refs/heads/xyzzy - 或者可能是标记名称refs/tags/xyzzy。那会告诉你的 Git:&#34;啊,不要让其他Git设置master,要求它设置refs/heads/master或{{1取决于refs/tags/master&#34;。