【问题标题】:Message 'src refspec master does not match any' when pushing commits in Git在 Git 中推送提交时消息“src refspec master does not match any”
【发布时间】:2011-05-10 01:44:59
【问题描述】:

我克隆我的存储库:

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'

【问题讨论】:

  • @Marco 这不是重复的。那是关于将本地分支推送到远程分支的一个非常具体的问题。这个是关于初始化一个 repo 并将其推上去的。它们产生相同的错误,但产生该错误的原因和修复完全不同。另外,sinoohe,您应该接受一个答案。可能是第一个,因为它回答了问题并帮助了 350 多人。
  • 希望这篇文章对某人有用-samranga.blogspot.com/2015/07/… 即使尝试从本地已经存在的项目创建 git BitBucket 存储库,也会弹出问题中的错误
  • 又一个简单的任务被 Git 搞定了。 Git 开发人员应该在他们的 SDLC 循环中使用 Stack Overflow 作为反馈。超过 850,000 人应该指出 Git 的工作流程存在严重问题。他们需要聘请 UX 专家,因为他们显然无法独自完成。
  • 如果你没有用点或一些文件添加git add,也会出现这个错误。
  • 最近 Github/Git 没有默认的“master”分支。 “master”已更改为“main”分支。所以这可能是这个错误的一个可能原因。

标签: git git-commit git-clone git-add git-refspec


【解决方案1】:

也许你只需要承诺。我这样做时遇到了这个问题:

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

成功了!

【讨论】:

  • 不要盲目的跟着这一步,看看@Vi提到的,​​然后修改你的push命令来修正ref。
  • 出现此错误的最可能原因是所有文件都未跟踪且未添加。 git add --all 如果您希望添加所有文件或者您可以有选择地添加文件。然后git commit -m "Initial comment"git push origin master。这肯定会奏效。
  • 修复了不同的问题,这很好,但并不是对 This 实际问题的真正答案。
  • git commit -m 'initial commit' 应该用双引号引起来。 'git commit -m "initial commit",至少在 Windows 上。
  • 另一个可能的原因:你实际上没有一个名为 master 的分支
【解决方案2】:
  1. 试试git show-ref 看看你有什么参考。有refs/heads/master吗?

由于最近的“用 GitHub 中的 main 替换 master”操作,您可能会注意到有一个 refs/heads/main。因此,以下命令可能会从git push origin HEAD:master 更改为git push origin HEAD:main

  1. 您可以尝试git push origin HEAD:master 作为更独立于本地引用的解决方案。这明确表明您希望将本地 ref HEAD 推送到远程 ref master(请参阅 git-push refspec 文档)。

【讨论】:

  • 我的主分支不在提交之上!所以我创建了一个分支,它位于所有分支的末尾,并将它们推送到服务器:
  • git checkout -b testbranch ; git push origin testbranch:master
  • git show-ref 展示了我的分支; git push origin HEAD:<branch> 为我工作。
  • 你刚刚救了我 Vi。谢谢git push origin HEAD:master。但是为什么像git push --force origin master 这样的东西不起作用呢?
  • master 现在改为main
【解决方案3】:

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

我的错误信息是这样的:

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.

【讨论】:

  • 其他答案并没有解决我遇到的问题(例如,我已经提交并且仍然有这个错误),但是做一个git push origin BRANCH --force 工作。谢谢!
  • this earlier answer。我怀疑您需要添加一个文件,因为 git 不会跟踪空目录。
  • push --force 也可能完全摧毁同事的辛勤工作。由它添加警告。
  • 这解决了我的问题。我认为 git add 做到了。虽然一开始 git 无法识别事物,但这可能就是我遇到问题的原因。 git add 命令解决了我的问题。在那之后,我也能够在没有 --force 的情况下推动。谢谢阿约
【解决方案4】:
git push -u origin master
error: src refspec master does not match any.

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

git commit -m "initial commit"

git push origin master

成功推送到master。

【讨论】:

  • 我检查了它是否正常工作。请忽略 -u 选项然后尝试
  • 这里的问题似乎与 OP 的完全不同......但似乎包括我在内的很多人都有这个问题。
【解决方案5】:

对我来说,我必须确保在服务器上正确配置了 公钥(附加在 ~/.ssh/authorized_keys 中)和 GitHub/Bitbucket(添加到我的 SSH GitHub 或 Bitbucket 上的密钥)——它们需要匹配。那么:

git add --all :/
git commit -am 'message'
git push -u origin master

【讨论】:

    【解决方案6】:

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

    只要我添加了一个文件(例如 README),Git 推送就很好用。

    【讨论】:

    • 这可能有效,因为 git 实际上并不跟踪目录,只跟踪文件。所以如果一个目录是空的,git实际上不会添加它。
    • OP 添加了一个文件 (xx.php),所以在这种情况下这不是问题,即使在其他情况下这可能是一个问题,并且添加一个文件是 that 的解决方案 i> 问题。
    • 这样一个简单的解决方案可以解决令人沮丧的问题。我正在测试 repos 的创建和克隆,并创建了空目录而不是文件。
    • 8 年后,这让我有些头疼!
    • 就我而言,1--> git init 2---> git add origin....etc 3---> git git push -u origin master ===>然后我得到了上述错误。 ===>然后我执行了以下2个命令,它消失了。 ---> git add * ---> git commit -m "Some message" --->git git push -u origin master ===>对我来说很好,就我而言。
    【解决方案7】:

    缺少或跳过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__,远程名称上方为“origin”
    • 他们在他们的问题中添加并承诺,所以这不是问题,即使这对其他人有帮助。
    • 这个答案确实有效,因为这里使用了-u 选项。
    • git *create remote 是什么?
    【解决方案8】:

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

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

    【讨论】:

      【解决方案9】:

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

      $ 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'
      

      【讨论】:

      • 哈哈。我试图推送到原始主机,但该分支不存在。它被称为原始稳定。
      • -u 可能在这里有所帮助。
      • 上述情况,问题当然是没有本地分支master,所以不能推送。您要么想要推送现有的分支,要么创建主分支然后推送它,如下所示:git checkout -b master; git push -u origin master;
      • 当我拼错分支名称时才得到这个。
      • 我的本地分支拼写为“sheduler”,而我正在做git push origin scheduler。哈!一封信将在编程中杀死您。大声笑
      【解决方案10】:

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

      喜欢:

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

      【讨论】:

        【解决方案11】:

        我遇到了同样的问题,我用--allow-empty:

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

        补充

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

        【讨论】:

        • 这是唯一有效的。
        【解决方案12】:

        几天前我遇到了同样的问题。

        如果您现在(2020 年)创建了一个新的存储库,那么默认分支是 GitHub 上的 ma​​in

        您现在可以在您的存储库分支中查看 GitHub。

        你也可以通过运行命令在终端上查看分支:

        git branch
        

        这就是你需要运行的原因

        git push origin main
        

        而不是

        git push origin master
        

        祝你好运

        【讨论】:

        • 感谢您的帮助。真的很有帮助。
        【解决方案13】:

        面临的问题

        当我在 GitHub 上创建一个新存储库并将其与我拥有的客户端计算机中的 react-app 链接时,我遇到了同样的问题。

        我使用了以下步骤:

        问题前使用的命令

        git init
        git commit -m "first commit"
        git branch -M main
        git remote add origin "_git repository link here_"
        git push -u origin main
        

        我的错误

        但是你可以看到我的错误是没有使用git add . 命令 我犯了这个错误是因为我已经有了 README.md 文件,并且 GitHub 在创建存储库时会使用基本命令来指导我们。

        我的解决方案

        我的解决方案是在git init 命令之后使用git add .

        以相同的顺序使用以下命令集来解决该问题:

        git init
        git add .
        git commit -m "first commit"
        git branch -M main
        git remote add origin "_git repository link here_"
        git push -u origin main
        

        【讨论】:

        • 运行git add . 然后git commit -m "first commit",然后再次推送
        • git branch -M main 为我工作。
        【解决方案14】:

        对我来说,以下工作可以移动未跟踪的文件:

        git add --all
        

        接下来,我遵循了类似的步骤

         git commit -m "First commit"
        

        那么,

        git remote add origin git@github.....
        

        最后但并非最不重要的一点:

        git push -u origin master
        

        当您执行此操作时,Windows 安全系统将弹出询问您的用户名和密码。

        【讨论】:

        • 你的意思是 `git add --all` 有两个破折号
        【解决方案15】:

        两种可能:

        1- 要么您忘记包含.gitignore 文件。

        以下是所需的所有步骤:

        1. 在远程创建一个空的 Git 存储库,

        2. 在本地创建 .gitignore 文件为您的项目。 GitHub给你examples here的列表

        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
          

        2- 或者你正在尝试创建一个新的 Github 项目。

        Github 将 master 替换为 main 作为默认分支名称。解决问题:

        1. 在您的本地项目中:
          1. 删除.git 文件夹(如果存在)
          2. 通过在您的项目中启动以下命令来重新创建一个干净的存储库:

        在终端:

        git init
        
        git add .
        
        git commit -m "YOUR FIRST MESSAGE HERE"
        
        git branch -M main
        
        git remote add origin _GIT_LINK_TO_PROJECT_HERE_
        
        git push -u origin main
        

        【讨论】:

        • 与 .gitignore 相关的错误是怎么回事?!如果它是相关的(我非常怀疑),你应该在你的答案中解释它。谢谢
        • 谢谢,我错过了忽略文档。
        【解决方案16】:

        您可能在git init 命令之后忘记了命令git add .

        【讨论】:

          【解决方案17】:

          在 GitHub 更新 01.10.20 之后,您应该使用 main 而不是 master。

          像这样做......

          1. Create a repository on GitHub
          2. 删除本地目录中现有的.git 文件
          3. 进入本地项目目录并输入git init
          4. git add .
          5. git commit -m"My First Commmit"
          6. 现在检查您的分支名称,在您的本地项目中它将是 master
          7. git remote add origin &lt;remote repository URL past here from the github repository&gt; 然后输入 git remote -v
          8. git push -f origin master
          9. 现在检查 github 存储库,您将看到两个分支 1.main 2.master
          10. 在您的本地存储库中创建新分支,分支名称将为main
          11. git checkout main
          12. git merge master
          13. git pull origin main
          14. git push -f origin main

          注意:从 01.10.20 起 github 决定使用 main 而不是 master 分支使用默认分支名称

          【讨论】:

          【解决方案18】:

          只需添加一个初始提交。请按以下步骤操作:

          • git add .

          • git commit -m "initial commit"

          • git push origin master

          这对我有用。

          【讨论】:

            【解决方案19】:

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

            快速

            git checkout -b "master"
            

            创建了 master 分支,此时快速

            git push -u origin master
            

            将工作推送到 Git 存储库。

            【讨论】:

              【解决方案20】:

              也许分支是主分支而不是主分支

              试试

              git push origin HEAD:main git push origin main

              【讨论】:

              • 这是我的问题。尝试了很多东西,然后意识到它是 main 而不是 master。
              【解决方案21】:

              我遇到了同样的问题,

              解决了我的问题。

              只做一个分支:

              git checkout -b "master"

              之后

              git push -u origin master

              bomm.

              希望能解决。

              【讨论】:

              • 我遇到了同样的问题,并意识到分支在 main 上。然后我按照这个解决了。
              • 这里也一样。谢谢!
              【解决方案22】:

              这只是意味着你忘了做初始提交,试试

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

              【讨论】:

              • 请写 git commit -m "initial commit"
              【解决方案23】:
              1. 首先,git add .
              2. 第二,git commit -m "message"
              3. 第三,git push origin branch

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

              【讨论】:

                【解决方案24】:

                我也按照以下 GitHub 的指示进行操作,但我仍然遇到了与 OP 提到的相同的错误:

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

                对我来说,我希望这对一些人有所帮助,我在我的 MacOS 上推送了一个大文件 (1.58 GB on disk)。在复制粘贴上面建议的代码行时,我并没有等待我的处理器真正完成add . 进程。因此,当我输入 git commit -m "message" 时,它基本上没有引用任何文件,也没有完成将我的代码成功提交到 GitHub 所需的任何操作。

                当我输入git status 时,我通常会为添加的文件获得绿色字体。但一切都是红色的。好像根本没有添加一样。

                所以我重做了步骤。我输入了git add . 并等待文件添加完毕。然后我完成了接下来的步骤。

                【讨论】:

                  【解决方案25】:

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

                  git commit -m "first commit"
                  

                  【讨论】:

                    【解决方案26】:

                    要检查当前状态,git status

                    并遵循以下步骤:

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

                    【讨论】:

                      【解决方案27】:

                      当您添加文件,忘记提交和推送时,会发生这种情况。 所以提交文件然后推送。

                      【讨论】:

                        【解决方案28】:

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

                        git add .
                        

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

                        【讨论】:

                          【解决方案29】:

                          如果您在分离 HEAD 模式下工作时遇到此错误,您可以这样做:

                          git push origin HEAD:remote-branch-name
                          

                          另请参阅:Making a Git push from a detached head

                          如果您在与远程分支不同的本地分支上,您可以这样做:

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

                          【讨论】:

                            【解决方案30】:

                            简答:这个错误表示你要远程推送的分支不存在!

                            就我而言,从 2020 年 10 月开始,此后创建的存储库具有 main 分支,而不是之前的 master 分支。所以我必须这样做:

                            git push -u origin main 
                            
                            • 如果设置了上游,你可以跳过 -u 标志(就像你已经克隆了它一样)

                            宾果!这对我有用! 希望有帮助!编码愉快!

                            【讨论】:

                            • 即使这样也失败了。我的本地分支是master。我在本地创建了一个主目录,然后使用 -u 标志进行推送
                            • 非常感谢。有效。这确实是 github 近期的一次重大更新
                            • 谢谢,这也是 gitlab 的最新更新,以防万一有人想知道。
                            猜你喜欢
                            • 2022-01-08
                            • 2020-09-18
                            • 2012-12-13
                            • 1970-01-01
                            • 2013-05-14
                            • 2022-11-27
                            • 1970-01-01
                            • 2011-06-29
                            相关资源
                            最近更新 更多