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

8

当我第一次向存储库提交代码时,我遇到了相同的问题。 我忘记提交任何更改,试图执行推送操作。

git push -u origin main

这个问题通过添加提交并执行以下操作解决:
git push -u origin main

7

我之所以会出现这个错误,是因为我的本地分支名与我尝试使用git push origin <<branchname>>创建的新远程分支不匹配。


7

对我而言有效的方法是切换到我想要推送代码的分支,然后简单地推送您的代码。

git checkout -b branchname-on-which-i-will-push-my-code

git add .
git commit -m "my commit message"
git push origin branchname-on-which-i-will-push-my-code

7

我尝试了以下方法,将仓库重置为远程主分支:

git checkout master
git commit -a -m "your comment"
git push origin master

7

我以前也遇到了同样的问题。问题出在我的本地分支名称上,它与我尝试推送的那个不同。将分支名称更正为目标分支后,我就能够推送更改了。

记住本地分支和目标分支应该是相同的


这并不真正回答问题。如果你有不同的问题,你可以点击提问来提出。如果你想在这个问题有新的回答时得到通知,你可以关注这个问题。一旦你有足够的声望,你也可以添加悬赏来吸引更多的关注。- 来自审查 - east1000
我不知道你们为什么说答案无效,最近我遇到了与问题中提到的相同的问题,并通过更改分支解决了它。只是在这里发布帖子,以帮助其他遇到同样问题的人。 - Arya Mohanan

7

当我添加一个空目录时出现了问题。Git不允许推送一个空目录,这里有一个简单的解决方法。

在你想要推送到远程的目录里创建文件.gitkeep,并通过命令行提交该“空”目录:

touch your-directory/.gitkeep
git add your-directory/.gitkeep
git commit -m "Add empty directory"

7
我曾经遇到过同样的问题,但在我的情况下,按照创建新存储库页面上给出的确切步骤从头开始操作可以解决问题。这里只需要将以下步骤粘贴过来即可:
  echo "# YYYY" >> README.md
  git init
  git add README.md
  git commit -m "first commit"
  git remote add origin https://github.com/XXXX/YYYY.git
  git push -u origin master

在 Git Bash 中输入上述内容。其中 XXXX 是用户名,YYYY 是仓库名称。

7

在我的情况下,我克隆了一个代码库,但是我没有在本地切换到该分支。

我通过以下方法解决了这个问题:

在修改代码之前,您应该执行以下操作:

git checkout branch-name

接下来修改您的代码

之后将代码推送到分支:

git push -u origin branch-name

此外,如果您第一次将本地存储库推送到GitHub,您需要先创建一个main分支:
git branch -M main

然后,在添加了origin(或您给您的远程起的任何名称)之后,将分支推送:

git push -u origin main

7

确保你正在推送到正确的分支,或者是否有任何拼写错误。使用以下命令检查你当前的工作分支名称:

git show-branch

1
遇到了同样的问题,结果发现我输错了分支名称。 - Pyae

6

这个问题的另一个可能原因是分支名称拼写错误。如果您像我一样做了,那么通过更正以下内容即可解决此问题:

git push origin mater

to

git push origin master

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