我在github.com上有一个公共存储库,有2个分支:master
和test
。
我在本地创建了一个新目录并执行了:
[ ] git clone git@github.com:{username}/{projectname}.git
然后我用
创建了一个名为my_test
的新分支
[ ] git branch my_test
并切换到它。
[ ] git checkout my_test
然后我将我的公共存储库的test
分支与
[ ] git merge origin/test
它导致了快进。
我做了一些改变并提交了它们。
然后我尝试将本地my_test
分支推送到github上的公共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
我做错了什么?
答案 0 :(得分:30)
也许试试:
git push git@github.com:{username}/{projectname}.git HEAD:test
该命令行上最后一个参数的格式是 refspec ,它是一个源ref,后跟一个冒号,然后是目标ref。您也可以使用本地分支名称(my_test
)而不是HEAD来确定您是否正在推送正确的分支。
git push
的文档详细介绍了此参数。
答案 1 :(得分:16)
此外,每次要推送时都不需要输入整个URL。当您运行克隆时,git将该URL保存为“origin”,这就是为什么您可以运行“merge origin / test”之类的东西 - 它意味着“origin”服务器上的“test”分支。因此,在这种情况下推送到服务器的最简单方法是:
git push origin my_test:test
这会将您的本地“my_test”分支推送到“origin”服务器上的“test”分支。如果您将本地分支命名为与服务器上的分支相同,则冒号不是必需的,您可以这样做:
git push origin test
答案 2 :(得分:2)
如果您尝试在没有先提交任何内容的情况下尝试推送到新存储库,也会出现此错误。尝试:
git add -A
git commit -am 'Initial commit'
然后再试一次。
答案 3 :(得分:1)
我想在这里您需要设置分支跟踪。请运行以下命令以启用跟踪
git branch --track my_test origin/my_test
测试
git push -u origin my_test
git pull origin my_test
答案 4 :(得分:0)
您需要确保本地存储库与您尝试推送的远程存储库具有相同的名称。
首先,使用git branch -m“test”更改存储库,以便“my_test”为“test”。 第二,只是git push origin test