在Git中推送提交时出现消息“ src refspec master不匹配”


2685

我用以下方法克隆我的存储库:

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'

26
@Marco这不是重复的。那是关于将本地分支推送到远程分支的一个非常具体的问题。这是关于初始化一个仓库并推高它。它们产生相同的错误,但产生错误的原因和解决方法完全不同。另外,您应该接受答案。可能是第一个,看到它回答了问题,已经帮助了350多人。
tandrewnichols 2013年

您是否设置了git config命令以在计算机上全局安装和配置git?
IgorGanapolsky

1
希望这篇文章对某人有用-samranga.blogspot.com/2015/07/… 即使尝试从已经存在的本地项目中创建git BitBucket存储库,也可以弹出问题中的错误
Samitha Chathuranga

我收到此错误,试图推送错误的分支名称。解决使用git status以获得正确的解决方案。
汤姆·霍华德

5
Git使另一个简单的任务变得困难。Git开发人员应在其SDLC循环中使用堆栈溢出作为反馈。超过850,000人应该表明Git的工作流程存在严重问题。他们需要雇用UX专家,因为他们显然不能自己正确地进行混合。
jww

Answers:


4135

也许您只需要提交即可。我这样做的时候遇到了这个问题:

mkdir repo && cd repo
git remote add origin /path/to/origin.git
git add .

糟糕!从未犯过!

git push -u origin master
error: src refspec master does not match any.

我要做的就是:

git commit -m "initial commit"
git push origin master

成功!


130
不要盲目地遵循此步骤,查看@Vi所提到的内容,然后修改您的push命令以更正引用。
Kumar 2012年

49
出现此错误的最可能原因是所有文件都未跟踪并且尚未添加。git add --all如果您希望添加所有文件,或者可以有选择地添加文件。然后git commit -m "Initial comment"git push origin master。这肯定会起作用。
Bhanu Pratap Singh 2015年

6
修复了一个不错的问题,但实际上并不是实际问题的答案。
Michael Durrant 2015年

7
git commit -m 'initial commit'应该用双引号引起来。” git commit -m "initial commit",至少在Windows上。
dance2die

5
另一个可能的原因:您实际上没有分支称为master
CarlosAS '18

841
  1. 尝试git show-ref看看您有什么裁判。有refs/heads/master吗?

  2. 您可以尝试使用git push origin HEAD:master与本地参考无关的解决方案。这明确表明您要将本地引用推HEAD送到远程引用master(请参阅git-push refspec文档)。


6
我的主分支不在提交之上!因此,我创建了一个分支,该分支位于所有分支的末尾,并将其推送到服务器:
sinoohe 2010年

10
git checkout -b testbranch; git push origin testbranch:master
sinoohe 2010年

101
git show-ref显示我的分支;在git push origin HEAD:<branch>为我工作。
Glen Solsberry 2011年

5
你刚刚救了我Vi。谢谢你git push origin HEAD:master。但是,为什么这样的方法git push --force origin master不起作用?
shkschneider 2012年

4
@ gms8994-您是正确的。如果某人首先创建分支而不是将其推入master,则会unfriendly显示相同的错误。使用git push origin <branch>而不是master万一您尝试git checkout -b <branch>在初始之后进行任何第一次推送之前使用git remote add origin <url>
asyncwait

225

在删除本地计算机上的所有文件后,我也遇到了类似的错误,并且我必须清理存储库中的所有文件。

我的错误消息是这样的:

error: src refspec master does not match any.
error: failed to push some refs to 'git@github ... .git'

通过执行以下命令解决了该问题:

touch README
git add README

git add (all other files)
git commit -m 'reinitialized files'
git push origin master --force  # <- caution, --force can delete others work.

10
其他答案不能解决我遇到的问题(例如,我已经提交但仍然存在此错误),但是可以git push origin BRANCH --force解决。谢谢!
Lemmings13年

请参阅此更早的答案。我怀疑您需要添加文件,因为git不会跟踪空目录。

3
推力-也可以完全吹走同事的辛苦工作。通过它添加了警告。
Michael Durrant 2015年

3
这解决了我的问题。我认为git add做到了。虽然一开始推送东西时git无法识别,但这可能就是我遇到问题的原因。git add命令解决了我的问题。在那之后,我也可以不用--force来推动。感谢Aryo
Anandaraja_Srinivasan

203
  1. 我的更改已经提交
  2. 强制推送仍然给了我同样的错误。

所以我尝试了Vi的解决方案

git push origin HEAD:<remoteBranch> 

这对我有用。


19
我终于发现这是因为我拼错了分支名称。我支到成功推到起源与名为B带分支git push origin HEAD:B,但我还是每次都得到了同样的错误,当我用推git push origin分支A.
易H.

1
@YiHuang,谢谢,我之前检查过我的分支机构名称,然后由于您的评论而再次对其进行了检查-存在相同的问题,将其拼写错误。
lakesare 2014年

1
@ YiH.i确定我的分支名称正确,但我在阅读您的评论后就重新检查了它,但我的情况不好-存在相同的问题。
空指针'02

125
git push -u origin master
error: src refspec master does not match any.

为此,您需要输入以下提交消息,然后推送代码:

git commit -m "initial commit"

git push origin master

成功地推向高手。


我检查了它的工作情况。请忽略-u选项,然后尝试
VIKAS KOHLI,

这里的问题似乎与OP的问题完全不同...但是似乎包括我在内的许多人都有这个问题。
ZX9

110

对我来说,我必须确保公共密钥是正确的服务器(在〜/ .ssh / authorized_keys的附加)上配置并在GitHub上 / 到位桶(加入GitHub上或到位桶我的SSH密钥) -他们需要匹配。

然后:

git add --all :/

git commit -am 'message'

git push -u origin master

最后它对我有用。


88

在我仅添加目录之后,我发现这发生在全新的存储库中。

一旦我添加了一个文件(例如自述文件),Git push的效果就很好。


6
这可能有效,因为git实际上并不跟踪目录,仅跟踪文件。因此,如果目录为空,则git实际上不会添加它。

1
OP添加了一个文件(xx.php),因此即使在其他情况下这也可能是一个问题,并且添加文件可以解决问题,但在这种情况下这不是问题。
Michael Durrant 2015年

1
如此简单的解决方案可以解决令人沮丧的问题。我正在测试存储库的创建和克隆,并创建了空目录而不是文件。
James Wierzba 2015年

1
8年后,这让我头疼!
rvictordelta

在我的情况下,1-> git init 2 ---> git add origin .... etc 3 ---> git git push -u origin master ===>然后我得到了上面的错误。===>然后我执行了以下2条命令,它消失了。---> git add * ---> git commit -m“某些消息” ---> git git push -u origin master ===>在我看来,对我来说很好。

67

丢失或跳过git add .git commit可能导致此错误:

git push -u origin master
Username for 'https://github.com': yourusername
Password for 'https://yourusername@github.com': 
error: src refspec master does not match any.
error: failed to push some refs to 'https://github.com/yourusername/foobar.git'

要解决此问题,请重新初始化并遵循正确的顺序:

git init
git add .
git commit -m 'message'
git *create remote
git push -u origin master

git remote add __REMOTE_NAME__ __URL_OR_SSH__
没错

1
他们在问题中添加并做出了承诺,即使这对其他人有帮助,也不是问题。
Michael Durrant 2015年

但是,由于-u此处使用了该选项,因此此答案确实有效。
Michael Durrant 2015年

63

要修复此问题,请重新初始化并遵循正确的代码顺序:

git init
git add .
git commit -m 'message'
git push -u origin master

55

确保先添加,然后提交/推送:

喜欢:

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

43

当您在特定分支中并尝试推送尚不存在的另一个分支时,也会发生这种情况,例如:

$ git branch
* version-x  # you are in this branch
  version-y

$ git push -u origin master
error: src refspec master does not match any.
error: failed to push some refs to 'origin_address'

3
大声笑。我试图推送到原始主机,但是那个分支不存在。它被称为起源稳定。
penner

1
-u会在这里帮助。
Michael Durrant 2015年

1
在上述情况下,问题当然是没有本地分支master,因此您不能推送它。您要么要推送现有分支,要么创建主分支,然后再推送它,如下所示:git checkout -b master; git push -u origin master;
tanius

4
我拼错分支名称时才得到这个。
塞巴斯蒂安·阿莱里德

2
我的本地分行是被拼写的“S ^ h eduler”和我在做git push origin scheduler。哈!掉一个字母会在编程中杀死您。大声笑
protovan福音战士

43

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

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

补充

出现此问题的主要原因之一是,某些Git服务器(例如BitBucket)master在克隆新存储库时未初始化其分支。


35

对我而言,以下工作是移动未跟踪的文件:

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

29

就我而言,我忘记了包含.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
    

这个错误与.gitignore有什么关系?如果相关(我非常怀疑),则应在答案中进行解释。谢谢
pedram bashiri

26

只需添加一个初始提交即可。按着这些次序:

  • git add .

  • git commit -m "initial commit"

  • git push origin master

这对我有用。


24

我的问题是尚未在本地创建“ master”分支。

快速

git checkout -b "master"

创建了主分支,此时,快速

git push -u origin master

将工作推送到Git存储库。


22

您可能忘记了命令“ git add”。在“ git init”命令之后。


另外git commit,当然...
比尔

19

这只是意味着您忘记了进行初始提交,请尝试

git add .
git commit -m 'initial commit'
git push origin master

请不要写git commit -m“ initial commit”
Yash Agrawal

19
  1. 第一, git add .
  2. 第二, git commit -m "message"
  3. 第三, git push origin branch

请检查拼写错误,因为这也可能导致该错误。


19

我还遵循了以下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

当我错过跑步时,我遇到了同样的问题:

git add .

(您必须至少有一个文件,否则您将再次收到错误。)


18

如果您在第一次推送之前忘记提交,就会发生这种情况。赶紧跑:

git commit -m "first commit"

17

要检查当前状态,git status

并遵循以下步骤:

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

16

添加文件,忘记提交和推送后,就会发生这种情况。因此,提交文件,然后推送。


14

我有同样的问题。我通过以下步骤做到了:

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

14

如果在分离的HEAD模式下工作时遇到此错误,则可以执行以下操作:

git push origin HEAD:remote-branch-name

另请参阅:从分离的头部推动Git

如果您位于与远程分支不同的本地分支上,则可以执行以下操作:

git push origin local-branch-name:remote-branch-name

13

在您从外部存储库(GitHub)检出代码并想将其导入个人/内部系统的情况下,此命令确实很出色:

git push --all origin

这会将所有本地分支推送到远程,而无需检查引用,也无需坚持提交。


12

如果您要推送的分支名称中有错字,也会发生这种情况。


2
我怀疑我们中很多通过网络搜索来到这里的人实际上都打错了名字!
2014年

12
git add .

是你所需要的全部。该代码将跟踪您目录中所有未跟踪的文件。


10

如果您在执行git init并推动您的初始提交后仍遇到此问题。然后,您可以尝试以下操作:

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

您的代码将被推送为新分支。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.