【问题标题】:Changing git push from master to main does not solve "src refspec does not match any" error将 git push 从 master 更改为 main 不能解决“src refspec does not match any”错误
【发布时间】:2021-01-04 21:54:21
【问题描述】:

我一直在尝试推送到有一段时间没有使用 git 的新 git 存储库。我在换工作时使用的计算机与我通常使用的计算机不同,并且之前从未在这台计算机上成功提交过。这是一台 Windows 7 PC,我使用的是git bash

我首先设置了我的 SSH 密钥并将公钥复制到我的 github 设置中。接下来,我使用git remote add origin <url>将我的组织 github 存储库上新创建的空存储库链接到我计算机上已经包含我想要提交的代码的文件夹。然后我做了:


git init
git remote add origin git@github.com:myorg/myproject.git
git commit -m "First commit"
git add .
git push -u origin master

在推送之前一切正常,导致此错误:

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

在 StackOverflow 上搜索后,我发现几篇帖子解释说,由于对使用的语言的担忧,Github 在 2020 年将其默认存储库的名称从“master”更改为“main”。大多数回复建议只需将推送行编辑为:git push origin main 但是当我尝试此主题或该主题的变体(例如git push origin HEAD:main)等时,它只是给了我与上述相同的错误。

然后我认为如果我将空存储库克隆到我的计算机上可能会更好(它工作正常,所以我猜我的 .SSH 密钥没有问题)然后将我的文件复制到其中(没有 @987654327 @folder 以防万一搞砸了)。但是,当我进入推送步骤时,它只会产生与上述相同的错误(使用“main”或“master”时)。

似乎即使 Github 现在将默认分支称为“main”,Git bash 仍然将我计算机上的本地文件夹称为“master” - 因此出现“不匹配任何”错误?

我使用的 Git Bash 版本是 2020 年 3 月 23 日安装的 2.26.0.1。只是我的 git 版本需要更新吗(我今晚无法测试,因为我没有管理员权限)?

请注意,如果我这样做 git show-ref 什么都不会出现 - 不确定这意味着什么,因为其他帖子暗示这应该导致我正在使用的分支的名称。我可以看到 Git Bash 在标题中将我的本地分支称为“master”。

我会很感激任何关于为什么 git push origin main 似乎不起作用以及我可以做些什么来解决这个问题的见解。

【问题讨论】:

    标签: git push main master


    【解决方案1】:

    您应该首先git add .,然后才是git commit。现在您的提交失败,因为没有暂存文件,导致没有初始提交:

    git init
    git remote add origin git@github.com:myorg/myproject.git
    git add .
    git commit -m "First commit"
    git push -u origin master
    

    【讨论】:

    • 感谢你的捕获,它起作用了——但现在奇怪的是,Github 现在将我的主分支称为“master”,而不是“main”。我很高兴我可以向它推送代码,但仍然很好奇。
    • 只需检查您的本地分支名称是否与 push 命令中的名称匹配。您可以在远程跟踪与本地不同的名称。
    猜你喜欢
    • 2012-12-13
    • 2022-01-08
    • 2011-05-10
    • 2020-09-18
    • 2021-03-27
    • 1970-01-01
    • 2022-07-14
    • 2013-05-14
    相关资源
    最近更新 更多