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

4

4

首先您需要使用git init创建自己的.git文件,否则如果您克隆别人的git文件夹,它将无法识别您的git凭证。启动git后,继续使用git add .git commit ...


4

您可能会因多种原因遇到此问题。

1. 暂存文件的提交挂起

如果您通过运行git add命令(即git add .)添加了更改,并且从未提交这些文件,然后尝试将分支推送到远程存储库。在这种情况下,您将面临错误src refspec master does not match any.

2. 无效的本地分支名称

如果您在分支名称中打错字(即使用mster而不是master),则会导致出现此错误。这意味着您正在尝试推送的分支不在本地存储库中。


3
如果您有 Visual Studio Code
  1. 如果您不需要跟踪更改(如果需要,git stash),则删除 .git 文件夹。
  2. git init
  3. git commit -m "first commit"
  4. git remote add origin https://github.com/YOURusername/YOURrepo.git
  5. 通过 Visual Studio Code UI IDE,从左侧面板进入源代码控制或者使用快捷键 (Ctrl + Shift + G)
  6. 将所有更改或部分进行暂存
  7. 提交您的更改
  8. 通过左下角的按钮同步您的更改(类似数字或云图标)。然后,Visual Studio Code要求您输入用户名和密码。
如果您有该仓库的权限,则可以查看:
> git push -u origin master
Fatal: AggregateException encountered.
To https://github.com/your_account/yourrepo.git
 * [new branch]      master -> master
> git status -z -u
> git symbolic-ref --short HEAD
> git rev-parse master
> git rev-parse --symbolic-full-name master@{u}
> git rev-list --left-right master...refs/remotes/origin/master
> git for-each-ref --format %(refname) %(objectname) --sort -committerdate
> git remote --verbose
> git show :ionic.config.json
> git check-ignore -z --stdin

3

我在错误的分支上。检查你的分支。我在一个“master”分支而不是“main”分支上。


1
这并没有真正回答问题。如果您有不同的问题,可以通过点击提问来提出。如果您想在此问题获得新答案时收到通知,可以关注此问题。一旦您有足够的声望,您还可以添加悬赏以吸引更多注意力。- 来自评论审核 - YesThatIsMyName

3
我曾经为一个GitHub项目做出贡献,因此我把这个项目fork了下来,然后克隆了它,创建了自己的分支,进行了一些提交,并尝试进行push操作。
然而,在这时我发现我克隆的不是我的fork版本,而是原始项目仓库(我没有权限将更改推送到其中)。
于是我修改了.git/config文件,将origin指向了我的仓库。
在这一点上,当我尝试push时,我会得到错误提示“error: src refspec my_awesome_branch does not match any.”
我所需要做的就是对任何文件进行修改并提交(类似于您在这个答案中看到的方法)。
git touch README
git commit -m "fixing error in my git repo"

然后:
git checkout master
git pull origin master
git push origin master # This will tell my remote repository about my new branch
git checkout my_awesome_branch
git push origin my_awesome_branch # Now it will work

3

我曾经遇到过同样的问题,后来发现自己没有提交任何文件,当我再次尝试提交时,就会出现以下错误信息:

*** Please tell me who you are.

Run

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

 to set your account's default identity.
 Omit --global to set the identity only in this repository.

 fatal: unable to auto-detect email address (got 'USER@WINDOWS-HE6I2CL.(none)')

然后我只需全局添加我的电子邮件和姓名,然后再次提交:

git commit -m 'Initial commit'

然后推送。
git push -u origin master

3
这是我的解决方案:
只需检出主分支即可: ```html

这对我有效:

只需检出主分支:

```
git checkout -b master
git add .
git push origin master

或者使用--force来强制进行更改。

git push origin master --force

3
自2020年10月1日起,GitHub 将把 master 分支的名称更改为 main。这就是导致问题的原因。 当有人输入 git push origin master 时,会看到以下错误信息:
error: src refspec master does not match any error: failed to push some refs to 'https://github.com/username/reponame.git' 您可以通过使用 git push origin main 来解决此问题。希望能对您有所帮助。我花了相当长的时间才找出为什么无法将我的提交推送到主分支。

我看到有几个人在对这个答案进行负投票。只是为了明确,当我将更改推送到主分支时,我遇到了相同的错误,并在阅读更多信息后了解到GitHub已将master更改为main,并且我只是想让人们知道这一点,这就是这个答案的原因。 - Vishnu

3

2021年3月,Git 2.31

使用git clone克隆一个空的GitHub存储库将创建一个具有“main”作为默认分支的本地存储库,即使init.defaultBranch设置为master

Git传输协议v2由GitHub支持,将向客户端通信远程默认分支的名称(现在是GitHub的main),以便由git clone创建的本地Git存储库。

这意味着添加和提交新提交将在“main”分支上完成,即使Git客户端仍将master视为默认分支。

下次推送时不再出现“src refspec master does not match any.”。


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