22

我在 github.com 有一个公共存储库,有 2 个分支:mastertest.

我在本地创建了一个新目录并做了:

[ ] git clone git@github.com:{username}/{projectname}.git

然后我创建了一个名为的新my_test分支

[ ] git branch my_test

并切换到它。

[ ] git checkout my_test

然后我将它从我test的公共存储库的分支中与

[ ] git merge origin/test

这导致了快进。

我做了一些更改并提交了它们。然后我尝试将本地分支推送到github my_test的公共分支test

[ ] git push git@github.com:{username}/{projectname}.git test 

但我收到了这个错误:

error: src refspec test does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@github.com:{username}/{projectname}.git

我究竟做错了什么 ?

4

5 回答 5

30

也许尝试:

git push git@github.com:{username}/{projectname}.git HEAD:test

该命令行上最后一个参数的格式是一个refspec,它是一个源 ref,后跟一个冒号,然后是目标 ref。您还可以使用本地分支名称 ( my_test) 而不是 HEAD 来确定您推送的是正确的分支。

的文档git push对此参数有更多详细信息。

于 2009-06-06T11:14:53.260 回答
16

此外,您无需在每次推送时都输入整个 url。当您运行克隆时,git 将该 URL 保存为“origin”,这就是为什么您可以运行“merge origin/test”之类的东西 - 这意味着您的“origin”服务器上的“test”分支。因此,在这种情况下,推送到您的服务器的最简单方法是:

git push origin my_test:test

这会将您的本地“my_test”分支推送到“原始”服务器上的“测试”分支。如果您将本地分支命名为与服务器上的分支相同,则不需要冒号,您可以简单地执行以下操作:

git push origin test
于 2009-06-08T16:16:57.983 回答
2

如果您在未先提交任何内容的情况下尝试推送到新存储库,也会出现此错误。尝试:

git add -A
git commit -am 'Initial commit'

然后再次尝试您的推送。

于 2012-06-01T02:30:57.987 回答
1

我认为在这里您需要设置分支跟踪。请运行以下命令以启用跟踪

git branch --track my_test origin/my_test

去测试

git push -u origin my_test
git pull origin my_test
于 2011-12-21T11:12:52.587 回答
0

您需要确保您的本地存储库与您尝试推送的远程存储库具有相同的名称。

首先,使用 git branch -m "test" 更改存储库,以便 "my_test" 为 "test"。二、只需 git push origin test

于 2012-09-04T09:28:25.903 回答