Error: src refspec master does not match any. when trying to push to Bitbucket repo

Error: src refspec master does not match any. when trying to push to Bitbucket repo

我在 Bitbucket 上创建了一个新的存储库,并按照规定的非常简单的步骤进行操作。首先,我在我的本地文件夹中做了 git init 以进行版本控制。然后我做了:

git remote add origin https://my_account@bitbucket.org/my_account/my_project.git

成功了。最后一步是:

git push -u origin master

我获得了以下信息:

error: src refspec master does not match any.
error: failed to push some refs to 'https://my_account@bitbucket.org/my_account/my_project.git'

为什么会出现此错误?

您没有 master 分支。


考虑您执行的步骤:

  1. git init:这创建了一个新的空存储库,没有提交。

    鉴于没有提交,提交在哪个或哪些分支上? (这是一个有点哲学性的问题,但值得您尽最大努力来回答。)

  2. git remote add origin <em>url</em>:这个加了一个remote,这基本上只是一个 URL 的简称。您原本空的存储库现在有一个远程,名为 origin,它是 URL.

    的缩写
  3. git push origin master:这要求您的 Git 推送到由短名称 [=12] 指定的 URL 处的另一个 Git =],你的 master 分支上的所有提交,不在 他们的 master 分支上的所有提交,然后将他们的 master 分支设置为指向与您的 master 分支相同的特定 分支提示 提交。

现在,计算存储库中的所有提交。那里有多少?您希望您的 Git 在第 3 步中推送多少次提交?分支 master 上有多少次提交?如果没有提交,可以分支 master 甚至 exist 吗? (这让我们回到步骤 1 中的哲学问题。)


现在假设你 git add 一些文件到你的 index (索引是你构建 next 提交的地方),然后 运行 git commit。你会有多少次提交?提交将在哪个或哪些分支上进行? (这个问题最终出人意料地棘手,尽管事实上显而易见的答案——“所有新提交,因此是一个单一提交,将在分支 master 上”——是正确答案。)

在 Git 的世界里,一个分支 永远不会 是空的——它永远不会没有提交。没有提交的分支根本不存在。然而奇怪的是,你可以on这样的分支。 (这些分支有两个不同的形容词用于描述或创建它们,具体取决于您正在查看的 Git 命令或输出:unborn branchorphan分支.)

在Git中的分支意味着你的下一个提交,你建立的那个在索引中,将 扩展 该分支,向其添加新的提交。因此,您的问题的解决方案是在分支 master 上时至少进行一次提交,以便分支 master 在您进行第一次提交时就已经存在。然后就可以push了

如果有人仍然遇到此错误,请在 git push origin master 之前尝试 git add .git commit -m "init"。希望这对您有所帮助。

最后我尝试了这个。有效。

git push origin HEAD:<remoteBranch>