在Git中推送提交时出现“src refspec master does not match any”消息

4038

我使用以下命令克隆我的存储库:

git clone ssh://xxxxx/xx.git 

但是在我修改了一些文件并addcommit之后,我想将它们推送到服务器:

git add xxx.php
git commit -m "TEST"
git push origin master

但我收到的错误是:

error: src refspec master does not match any.  
error: failed to push some refs to 'ssh://xxxxx.com/project.git'

71
@Marco 这不是重复的问题。那个问题非常具体,是关于将本地分支推送到远程分支的问题。而这个问题是关于初始化存储库并将其推送的问题。它们产生了相同的错误,但是产生该错误的原因和解决方法完全不同。此外,sinoohe,你应该接受一个答案。可能是第一个答案,因为它回答了问题并帮助了超过350人。 - tandrewnichols
4
希望这篇文章能对某个人有所帮助 - http://samranga.blogspot.com/2015/07/create-git-bitbucket-repository-from.html?view=sidebar。即使尝试从本地已存在的项目创建git BitBucket存储库时,问题也可能会出现错误。 - Samitha Chathuranga
47
Git又把一个简单的任务搞得很复杂。Git的开发者应该将Stack Overflow作为他们的SDLC反馈环节。超过850,000人的使用应该表明Git的工作流程有严重问题。他们需要聘请一个用户体验专家,因为他们显然无法自己解决这个问题。 - jww
12
如果您没有使用点号或某些文件添加git add,也会出现这个错误。 - Blasanka
34
最近 Github/Git 不再默认使用 "master" 分支,而是改为使用 "main" 分支,因此这可能是导致此错误的原因。 - Harini Sj
显示剩余17条评论
140个回答

6

请检查您的提交标题,因为如果您忘记使用git commit -m "xxxx"命令,您将遇到相同的问题。

git commit -m "initial commit"

1
不好意思,我的意思是如果你忘记了使用 git commit -m "xxxx" 命令,你会遇到同样的问题。谢谢,我已经编辑了我的评论。 - Ferhat KOÇER

6
2020 年:
如果 30 多个答案都没有起作用,你可能需要运行 git push origin main 命令(在回答撰写时,master 已经被重命名为 main)。

这是92个答案(包括已删除的)。 - Peter Mortensen
最好将其与(确切的)Git版本号(除了日期)绑定在一起 - 如果适用的话,或者是一个已宣布的更改。无论如何,需要提供有关更改来源的详细信息(Git?GitHub?其他什么?)。有些人可能正在使用旧版本,包括旧操作系统的版本。 - Peter Mortensen
另一个回答表明更改的起源在GitHub上。 - Peter Mortensen

6

我也遇到了同样的问题。解决方法是将代码推送到存储库,就好像它是一个已经存在的项目,而不是一个全新的被初始化的项目。

git remote add origin https://github.com/Name/reponame.git
git branch -M main
git push -u origin main

6

作为解决您问题的选项之一:

git push origin HEAD

5
也许 GitHub 不知道你是谁。
首先,你需要运行以下命令:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

完美的答案!! - Taha Farooqui

5

对于存储库WIKI,我也遇到了这个错误。

git show-branch

如果显示主节点,则执行以下操作

git push -u origin master

如果它没有显示任何内容怎么办? - mustafa hasria
"Repositories WIKI"是什么?你能详细说明并/或提供参考资料吗? - Peter Mortensen

5

我也遇到了类似的错误。但 Git 给了我以下提示:

*** Please tell me who you are.

运行

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

或者设置您帐户的默认身份。
Omit --global to set the identity only in this repository.

然后错误就消失了。

我迁移到了一台新机器,出现了这些错误。设置我的GIT信息解决了问题。 - swt83

5

当我没有参考原始主分支时,这种情况发生在我身上。因此,您可以尝试以下操作:

git pull origin master

这将在本地仓库中创建指向源的主分支的引用。然后您可以将本地仓库推送到源。

git push -u origin master

5

今天我也遇到了同样的问题。我创建了一个新的仓库并将其克隆到我的机器上。我提交了代码并尝试推送它,但是却收到了同样的错误提示。我发现这是因为我使用了:

git push origin master

我的问题在于我认为我的默认分支是master,但是GitHub的新默认分支是main。我使用以下命令进行推送:

git push origin main

然后就可以正常工作了。

我的解决方案只适用于较新的存储库或最近遇到此问题的人,因为GitHub正在用main替换master术语。所以如果您遇到此错误,请确保检查您要推送的分支和GitHub上的分支名称。


我得到了相反的结果,我发现我的默认是主要的,但当我尝试使用菜单时出现错误,你认为我应该怎么做? - Hileamlak Yitayew
据我所理解,这是因为您还没有创建名为“men”的分支。如果您想要一个名为“men”的分支,可以使用“git checkout -b men”,然后您就可以将此分支推送到远程仓库了。 - Ayush Jain

5

尝试使用git show-ref

你可能会看到refs/heads/live

这意味着你应该执行

git push -u origin live

1
我认为你的意思是“main”而不是“live”。自2020年6月起,他们已经放弃使用“master”,改用“main”。 - Joseph Brenner
嗨@JosephBrenner,我已经删除了对Github的引用。 - Jeremiah Flaga
1
尝试了这个解决方案,得到了refs/heads/master。然后git push origin master就起作用了。 - Jacobs2000

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