Heroku:src refspec master不匹配任何内容。

139

我正在Heroku上进行托管。当我提交(push)时:

git push master Heroku

我遇到了一个错误:

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

6
如果你遇到了上述错误,可能是因为分支名称不正确,所以对于其他面临相同问题的人来说,双重检查分支名称会很有帮助。 - Persistent Plants
2
这种情况也会发生在你还没有提交任何内容的时候。你在添加后是否进行了commit操作? - seb
27
对于任何来到这里的人,我也经历过同样的事情,造成这种情况的原因是 git 将 master 重命名为 _main_,根据 此链接 ,从 2020 年 10 月 1 日开始,可能是 Heroku 过早行动了 ¯\(º.º)/¯。 - Scaramouche
尝试从头开始运行它:git config --global - Memphis Meng
16
也许需要运行命令 git push heroku main - Sam Murphy
26个回答

317

这对我来说是工作:

git push heroku HEAD:master

37
如果您编辑回答并解释为什么您的版本(git push <remote> <local ref>:<remote branch> 语法)有效而 OP 的版本无效,那么这个答案会更有用。 - pjmorse
如果想要推送到远程 Heroku 主分支并触发构建,但不想让本地主分支受到干扰,那么这也是不期望的行为。 - mtso
2
特别是当Heroku指南本身建议使用另一个方法而该方法却无效时,了解为什么这个方法有效会非常有用。 :| - Hakanai
1
这就是它能够工作的原因。 - belteshazzar
1
它能够工作是因为在Heroku中,git push的第二个参数master是远程默认分支,并且在某些情况下必须设置为此src refspec。本地分支是您checkout的分支,可能与master不同。 - Timo
显示剩余2条评论

79

我遇到了这个问题。

  1. 创建一个文件,随便什么名字都可以

  2. 提交

  3. 推送

 $ touch readme

 $ git add .

 $ git commit -m "init"

 $ git push heroku master

我不知道为什么。


29
使用这个解决方案,git push heroku main 对我起到了作用。 - Sam Murphy

38

乍一看,似乎你把masterHeroku的参数搞反了,因为git push的第一个参数应该是远程仓库的名称,第二个参数是refspec(通常是一个分支)。你更可能拥有一个名为master的分支和一个名为Heroku的远程仓库。但如果是这种情况,我会期待你收到一个不同的错误消息,比如:

fatal: 'master' does not appear to be a git repository
fatal: Could not read from remote repository.

你看到的错误信息表明本地没有 master 分支。这种情况可能是因为你还没有进行过任何提交,因为在第一次提交之前 Git 不会创建分支。你可以通过运行以下命令来检查:

git show-ref

如果您有主分支,则应该看到包含refs/heads/master的行。 如果没有,请尝试运行:

你需要在翻译后返回:

如果您有主分支,则应该看到包含refs/heads/master的行。 如果没有,请尝试运行:

git commit -m 'Initial commit'

您还可以使用以下命令查找可用的遥控器:

git remote -v

如果您有名为Heroku的远程调用,应该会看到类似以下内容:

Heroku  git@heroku.youraccount:yourproject.git (fetch)
Heroku  git@heroku.youraccount:yourproject.git (push)

这解决了我的问题!原来我创建了一个git分支,但我以为我已经切换到了主分支。显然,在我成功推送到Heroku之前,这些分支中存在冲突需要解决。 - YCode
1
必须使用双引号:git commit -m“初始提交” - stackunderflow
4
对于仍在疑惑的人,也有可能是您使用了“master”而不是“main”……或者反过来。 - Tiebe Groosman

38

33

当我不在本地主分支上时,尝试将代码推送到Heroku时出现了错误。

我通过以下方式解决:

git push heroku my_branch_name:master

my_branch_name替换为我所在的git分支的名称。我认为这告诉Heroku将此本地分支接收到Heroku的主分支上。


1
非常感谢!我的情况是,我的分支名叫做“develop”,而Heroku的部署分支名为“master”。因此,只运行"git push heroku master"不能为我工作,但是运行"git push heroku develop:master"可以工作!你救了我的一天!干杯! - dulerong

9
在我的情况下,这是因为我没有要推送的内容。我忘记了先执行“git add”。只要我先执行"git add",然后为实际内容执行"git commit",推送就能正常工作。

8
这是一个晚回答,但可能对某些人有帮助。
而不是这样:
git push master Heroku

尝试:

git push heroku master

7

实际上,我需要创建一个文件,否则提交为空。

touch readme.md

1
你可以使用 git commit -m dummy --allow-empty 命令来提交一个空的提交记录,而不必更改文件。 - Eugene Gr. Philippov

4

3
这对我有用。
 git config --global user.email "you@example.com"

 git config --global user.name "Your Name"

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