在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个回答

20

我也按照GitHub以下的指示进行了操作,但我仍然遇到了与OP提到的相同错误:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

对我来说,希望这能有所帮助,我正在将一个大文件 (1.58 GB on disk) 推送到我的MacOS上。在复制粘贴上述建议的代码行时,我没有等待处理器实际完成 add . 过程。所以当我输入 git commit -m "message" 时,它基本上没有引用任何文件,并且还没有完成必要的步骤以成功地将我的代码提交到GitHub。

证明这一点的是,当我输入 git status 时,通常会为添加的文件显示绿色字体。但所有东西都是红色的,好像根本没有添加。

所以我重新执行了这些步骤。我输入了 git add . 并等待文件被完全添加。然后我按照下一步继续进行。


18

我曾经遇到过同样的问题,并尝试了这里的大多数答案,但问题是由于GitHub最近更名造成的。

GitHub正在逐步将存储库的默认分支从master更名为main

https://github.com/github/renaming

你的新命令将是:

git push origin main

用这个代替:

git push origin master

谢谢,这个对我有用。其他的解决方案都不行。 - sailfish009
刚刚我也遇到了同样的问题。我刚刚使用了"master"而不是"main",结果成功了。 - undefined

17

2021年,GitHub将默认分支名称更改为main。以前是master

我曾经遇到过麻烦,因为我试图推送到不存在的master分支,而远程的分支实际上是main。确保您使用正确的分支名称。

以下命令对我有效:

git push origin main

《Stack Overflow》上的另一个答案声称在2020年末。 - Peter Mortensen

17

简短回答:这个错误意味着你想要推送到远程的分支不存在!

以我的情况为例,从2020年10月开始,自那时起创建的仓库都有了main分支,而不是以前的master分支。所以我所需要做的就是:

git push -u origin main

如果上游已经设置(例如您已经克隆了它),则可以跳过-u标志。

太棒了!这对我有用!


2
即使那样也失败了。我的本地分支是主分支。我在本地创建了一个主分支,然后使用 -u 标志进行了推送。 - aahnik
2
非常感谢,它起作用了。这真的是GitHub最近的一次重大更新。 - vishwampandya
谢谢,这也是GitLab的最新更新,以防有人想知道。 - Heath

16
在您从外部代码库(GitHub)检出代码并希望将其导入到个人/内部系统的情况下,这个命令真正发挥了作用:
git push --all origin

这会将所有本地分支推送到远程,而不检查参考和不坚持提交。


15

我有同样的问题。我通过以下步骤来解决:

1. git commit -m 'message'
2. git config --global user.email "your mail"
3. git config --global user.name "name"
4. git commit -m 'message'
5. git push -u origin master

13
git add .

这是你所需要的。该代码可以跟踪您目录中未跟踪的所有文件。


13

如果你试图推送的分支名有拼写错误,这种情况也会发生。


3
我猜很多通过网络搜索来到这里的人实际上是打错了名字! - sage

12

如果你在执行了git init并推送初始提交后仍然遇到此问题。那么你可以尝试以下方法:


git checkout -b "new branch name"
git push origin "new branch name"

你的代码将作为一个新分支被推送。


12

2020年底,GitHub将其master分支更改为main分支。

我注意到GitHub创建了一个新的master分支,当我使用git push -u origin master时,它不是主分支:

现在,当我尝试使用git push -u origin main直接推送到主分支时,它会给我这个错误:

我遇到了这个错误:

src refspec main does not match any
error: failed to push some refs to 'https://github.com/<my_project_name>.git

第一次提交到 main 后,我使用以下步骤解决了这个问题。更改以下代码中 GitHub 的 URL:

git branch -M main
git remote add origin https://github.com/Sidrah-Madiha/<my_project_url>.git
git push -u origin main

我给出了一个类似的答案,帮助我解决了这个问题:https://dev59.com/5Wkw5IYBdhLWcg3wlbd3#66737426 - Kale

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