git push时出现"src refspec does not match"和"failed to push some refs"错误

18

可能是重复问题:
git push到github时出错

我尝试将新的分支(我们称之为new_branch)推送到远程仓库。虽然远程仓库中没有这样的分支,但执行git push origin new_branch:new_branch应该可以创建它。当我尝试执行时,却得到了以下错误:

error: src refspec new_branch does not match any.
error: failed to push some refs to 'ssh://git@***'

在 SO 上,我查看了数百万个类似的问题,但没有一个专门涉及到这两个错误,并且它们只提到了 master 分支(我不知道是否有区别)。

我已经尝试了许多配置中的 commitresetpush,但目前为止它们都没有起作用。我猜测可能与 HEAD 有关,因为我之前曾搞乱过它。但这只是一个猜测,我甚至不知道如何正确地检查它,因为 GIT 对我来说仍然是一个 微小的秘密

那么,我该如何摆脱这些错误并将我的本地分支推送到远程仓库?


2
https://dev59.com/VHRA5IYBdhLWcg3wyBH1 https://dev59.com/M2kv5IYBdhLWcg3wewxd https://dev59.com/03NA5IYBdhLWcg3wcNbF - ellotheth
1个回答

44

你使用的git push语法包含一个refspec (new_branch:new_branch)。Refspecs总是采用源:目标的形式,因此错误提示你的refspec的源部分存在问题。

我通过尝试推送一个不存在的分支 (git push origin fake:fake) 重现了这个错误。我知道这似乎是一个非常愚蠢的问题,但你确定你的分支名称拼写正确吗?请记住分支名称是区分大小写的。当你输入git branch命令时,你看到了什么?


16
当我读到这句话时:"当然我拼对了分支名称..." 五秒钟后:"哎呀,现在可以用了!" - Jonathan
哈哈,我完全理解你的感受,Jonathan! - Ethan Brown
1
所以该错误提示你参考规范的源部分出了问题。 - Eugene
@EthanBrown 所以如果我理解正确的话,假设在远程仓库中没有名为 fake 的分支,但在本地仓库中创建了一个。那么这个命令 git push origin fake:fake 的实际作用是在远程创建一个 fake 分支,并将本地 fake 分支的所有提交推送到这个远程 fake 分支。对吗? - undefined
没错,@humbleCodes。此外,你还可以使用get push origin :fake来从远程删除一个分支,我一直觉得这个操作有点...晦涩。在Git中有很多语法选择,我觉得有些问题,但是嘿,我们习惯了这个主流系统! - undefined

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