提交到github时出现错误

22

我在github.com上有一个公开的代码仓库,其中包含两个分支:mastertest

我在本地创建了一个新目录,并执行了以下操作:

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

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

[ ] git branch my_test

并切换到它。

[ ] git checkout my_test

然后我将其从我的公共存储库的test分支合并了起来

[ ] git merge origin/test

我做了一些修改并提交了它们。 然后我试图使用 git 命令将本地的 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

我做错了什么?


5个回答

30

也许尝试一下:

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

该命令行中最后一个参数的格式是一个refspec,它由源引用紧随其后、冒号和目标引用组成。您也可以使用本地分支名称(my_test)代替HEAD,确保您正在推送正确的分支。

git push文档对此参数有更详细的说明。


我不明白。为什么使用HEAD时可以工作,但使用我的本地分支名称时却不能工作? - Alex Pi

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

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

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

然后再次尝试推送。

1

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

git branch --track my_test origin/my_test

测试

git push -u origin my_test
git pull origin my_test

0

你需要确保本地仓库的名称与你想要推送的远程仓库名称相同。

首先,使用 git branch -m "test" 更改仓库,以便将 "my_test" 更改为 "test"。 其次,只需执行 git push origin test。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接