原文: Error: src refspec master does not match any – How to Fix in Git

在使用 Git 时,你可能会遇到 “src refspace master does not match any” 的错误。

下面是这个错误的含义,以及如何解决它。

Git 中的 src refspec master does not match any 是什么意思

当你试图从本地仓库触发推送到主仓库时,你可能会遇到这样的错误:

git push origin master

这个错误可能是由不同原因引起的。

最有可能出现这种错误的原因是,master 分支不存在。

也许你克隆了一个新的仓库,默认的分支是 main,所以当你试图推送时,没有 master 分支。

你可以用 git branch -b 命令来显示连接到本地仓库的远程分支,像这样:

git branch -b

# results
#  origin/main
#  origin/feat/authentication
#  origin/other branches ...

在上面的结果中,你可以看到没有 master 仓库(origin/master)。所以当你试图推送到该仓库时,你会得到 “respec error”。

这个结果也适用于任何其他不存在的分支。比方说,我做了一些修改,并推送到一个不存在的远程 hello 分支:

git add .
git commit -m "new changes"
git push origin hello

该命令将产生以下错误:

error: src refspec hello does not match any

如何修复 “src refspec master does not match any” 错误

现在你已经知道 master 分支并不存在。解决这个错误的办法是,要么建立一个本地和远程的 master 分支,以便推送提交,要么将提交推送到一个现有的分支——也许是 main

你可以在 Git 驱动的网站(比如 GitHub)上创建一个远程 master 分支,也可以像这样直接在终端上创建:

git checkout -b master

# add commit

git push origin master

这些命令将在本地创建一个 master 分支。而通过推送到 origin master,也会在远程创建 master 分支。

但如果你不想创建一个 master 分支,你可以使用现有的默认分支(可能是 main)来代替。

总结

所以,如果你在推送到主干时遇到 Error: src refspec master does not match any,最可能的原因是 master 分支不存在。