题 在git中推送提交时,src refspec master与任何命令都不匹配


我克隆了我的存储库:

git clone ssh://xxxxx/xx.git 

但在我改变了一些文件之后 add 和 commit 他们我想将它们推送到服务器:

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'

1897
2017-11-15 06:09


起源


@Marco那不是重复的。这是一个关于将本地分支推送到远程分支的非常具体的问题。这个是关于初始化回购并推动它。它们产生相同的错误,但它们产生错误的原因和修复完全不同。另外,sinoohe,你应该接受一个答案。可能是第一个,看到它回答了这个问题,并帮助了350多人。 - tandrewnichols
您是否设置了git config命令以在您的计算机上全局安装和配置git? - Igor Ganapolsky
希望这篇文章对某些人有用 - samranga.blogspot.com/2015/07/...  即使尝试从已经本地存在的项目创建git BitBucket存储库,也可以弹出问题中的错误 - Samitha Chathuranga
我试图推错错误的分支名称时收到此错误。已解决使用 git status 得到合适的。 - Tom Howard
添加自述文件对我有用 - lft93ryt


答案:


也许你只需要提交。我做的时候碰到了这个:

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

成功!


2973
2017-09-27 16:07



不要盲目地按照这一步,查看@Vi提到的内容,然后修改push命令以更正ref。 - Kumar
我有同样的问题,只是忘了在推之前提交。这解决了这个问题,谢谢! - Shimon Tolts
出现此错误的最可能原因是所有文件都未跟踪且尚未添加。 git add --all 如果您想添加所有文件或者您可以有选择地添加文件。然后 git commit -m "Initial comment", git push origin master。这肯定会奏效。 - Bhanu Pratap Singh
修复了不同的问题,这个问题很好但不是真正的答案 这个 实际问题。 - Michael Durrant
git commit -m 'initial commit' 应该加双引号。 “git commit -m "initial commit",至少在Windows上。 - Sung Kim


  1. 尝试 git show-ref 看看你有什么裁判。在那儿 refs/heads/master

  2. 你可以试试 git push origin HEAD:master 作为更多本地参考独立的解决方案。


564
2017-11-15 11:24



我的主分支不在提交之上!所以我创建了一个分支,它在所有分支的末尾,我将它们推送到服务器: - sinoohe
git checkout -b testbranch; git push origin testbranch:master - sinoohe
git show-ref 显示我的分支;该 git push origin HEAD:<branch> 为我工作。 - Glen Solsberry
你刚救了我。谢谢你 git push origin HEAD:master。但为什么会这样 git push --force origin master 不起作用? - shkschneider
@ gms8994 - 你说的没错。如果有人创建分支作为第一件事而不是推入主人,同样 unfriendly 出现错误。使用 git push origin <branch> 代替 master 如果你试图 git checkout -b <branch> 在最初的任何FIRST推动之前 git remote add origin <url> - asyncwait


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

我的错误信息是这样的:

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.

就是这样,希望这会有所帮助。


187
2018-01-04 17:03



其他答案没有解决我遇到的问题(例如,我已经提交并仍然有这个错误),但做了一个 git push origin BRANCH --force 工作。谢谢! - Lemmings19
看到 这个早先的答案。我怀疑你需要添加一个文件,因为git不会跟踪空目录。
push --force也可以彻底摧毁同事的辛勤工作。添加了警告。 - Michael Durrant
这解决了我的问题。我认为git add做到了。虽然在第一个git推送东西时无法识别事物,但这可能就是我遇到问题的原因。 git add命令解决了我的问题。在那之后,我能够在没有--force的情况下推进。谢谢Aryo - Anandaraja_Srinivasan
这解决了似乎git不会没有'README'推 - Jimmy Obonyo Abor


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

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

git push origin HEAD:<remoteBranch> 

这对我有用。


145
2018-05-06 17:27



我终于发现这是因为我拼错了分支名称。我成功地将分支A推送到了一个名为B with的分支 git push origin HEAD:B,但每当我推动时,我仍然会得到同样的错误 git push origin 在分支A. - Yi H.
@YiHuang,呃谢谢,我之前检查了我的分支名称,然后因为你的评论我再次检查了 - 有同样的问题,错过了它。 - lakesare
@ YiH.i确信我的分支名称是正确的,但我只是在阅读你的评论后重新检查它并且我的不好 - 有同样的问题。 - Null Pointer


对我来说,我必须确保 公钥 在服务器中正确配置(附加在〜/ .ssh / authorized_keys中)和github / bitbucket(添加到我在github或bitbucket上的SSH密钥) - 它们需要匹配。

然后:

git add --all :/

git commit -am 'message'

git push -u origin master

最后为我工作。


96
2017-09-02 01:56



一个有效但不同的问题。 -u 帮到这里。 - Michael Durrant
谢谢!这是帮助我的唯一解决方案 - Matan Dahan
谢谢你救我 - core114
这个解决方案解决了这个问谢谢 :) - Sahil Gupta


缺少或跳过 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

62
2017-11-03 20:30



git:'* create'不是git命令。见'git --help'。 - sam
这是正确的,业务端更具体 git remote add __REMOTE_NAME__ __URL_OR_SSH__,远程名称上方是“origin” - aug2uag
他们在他们的问题中添加并承诺,即使这有助于其他人,也不是问题。 - Michael Durrant
然而,这个答案确实起作用了 -u 这里使用的选项。 - Michael Durrant


在git只添加了一个目录后,我发现这发生在一个全新的存储库中。

一旦我添加了一个文件(例如README),git push就能很好地工作。


56
2017-09-25 01:44



这可能有效,因为git实际上并不跟踪目录,只跟踪文件。因此,如果目录为空,git实际上不会添加它。
OP添加了一个文件(xx.php)所以在这种情况下这不是问题,即使在其他情况下这可能是一个问题,并添加一个文件的解决方案 那 问题。 - Michael Durrant
这是一个令人沮丧的问题的简单解决方案。我正在测试repos的创建和克隆,并创建了空目录而不是文件。 - James Wierzba
这对我来说是一个全新的回购 - Anupam