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

65

我遇到了同样的问题,我使用了--allow-empty:

$ git commit -m "initial commit" --allow-empty
...
$ git push
...

补充说明

这个问题的一个主要原因是一些Git服务器(例如BitBucket)在克隆一个新仓库时没有初始化它们的master分支。


1
这是唯一一个真正起作用的。 - user12439213

63

确保先添加再提交/推送:

例如:

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

61

几天前我遇到了同样的问题。

如果您最近(2020年)创建了一个新的代码库,则GitHub上的默认分支为main

您现在可以在您的代码库分支中检查。

同时,您可以在终端中运行以下命令来检查分支:

git branch

所以你需要跑步

git push origin main

而不是

git push origin master

1
以上所有方法都没有帮助,但最终这个方法起作用了。同样的错误信息可能有许多不同的问题。 - Jesse

46

有两种可能性:

1- 你可能忘记包含 .gitignore 文件了。

以下是所需的所有步骤:

  1. 在远程创建一个空的Git仓库,

  2. 在本地为您的项目创建.gitignore文件。GitHub会给您提供这里的示例列表

  3. 启动终端,并在您的项目中执行以下命令:

    git remote add origin YOUR/ORIGIN.git
    
    git add .
    
    git commit -m "initial commit or whatever message for first commit"
    
    git push -u origin master
    

2- 或者您正在尝试创建一个新的GitHub项目。

GitHub将master替换为main作为默认分支名称。要解决此问题:

  1. 在本地项目中:
    1. 如果存在.git文件夹,请将其删除
    2. 通过在项目中运行以下命令来重新创建干净的存储库:

在终端中:

git init

git add .

git commit -m "YOUR FIRST MESSAGE HERE"

git branch -M main

git remote add origin _GIT_LINK_TO_PROJECT_HERE_

git push -u origin main

这个错误如何与 .gitignore 相关?如果它确实相关(我非常怀疑),你应该在回答中解释一下。谢谢。 - pedram bashiri
谢谢,我之前漏掉了忽略文档。 - Johnny Bravo

43

对我而言,以下方法可用于移动未被跟踪的文件:

git add --all

接下来,我按照类似的步骤进行了操作。

 git commit -m "First commit"

那么,

git remote add origin git@github.....

最后但并非最不重要的:

git push -u origin master
当您执行此操作时,Windows 安全性将弹出要求您输入用户名和密码。

1
你的意思是用两个破折号 -- 来执行 git add --all 吗? - Abdallah Abdillah

33

你可能忘记了在执行git init命令之后执行git add .命令。


30

在 GitHub 更新于 2000-10-01 后,您应该使用 main 而不是 master

像这样做...

  1. 在GitHub上创建一个存储库
  2. 删除本地目录中现有的.git文件
  3. 进入本地项目目录并键入git init
  4. git add .
  5. git commit -m"我的第一次提交"
  6. 现在检查您的分支名称。它将是您本地项目中的master
  7. git remote add origin <从GitHub存储库中粘贴此处的远程存储库URL>,然后键入git remote -v
  8. git push -f origin master
  9. 现在检查GitHub存储库。您将看到两个分支1。main 2. master
  10. 在本地存储库中创建一个新分支,分支名称将为main
  11. git checkout main
  12. git merge master
  13. git pull origin main
  14. git push -f origin main
注意:从2020年10月1日起,GitHub决定使用main而不是master分支作为默认的分支名称。

GH CEO Nat Friedman在Twitter上发表了原始公告,回应了#BLM运动。https://twitter.com/natfriedman/status/1271253144442253312 - ultrasounder

28

2022年2月更新:

如果你的分支"main":

输入图像描述

运行这个命令:

git push origin main

如果您的分支"master":

enter image description here

运行此命令:

git push origin master

修改日期而不改变任何其他内容,这是怎么回事? - Peter Mortensen

28

只需添加初始提交。按照以下步骤操作:

  • git add .

  • git commit -m "initial commit"

  • git push origin master

对我有用。


27
我的问题是本地还没有创建'master'分支。

快速的

git checkout -b "master"

创建了主分支,在此时迅速

git push -u origin master

将工作提交到 Git 代码库中。


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