错误:源引用规范 main 与任何内容都不匹配 错误:无法将某些引用推送到 <url>

17
  1. 为了练习Github,我在电脑上创建了一个新目录,想要将其推送到Github。
  2. 我添加了一个csv文件,仅此而已。
  3. 我在Github上创建了一个新的repo,但没有初始化README。
  4. 我进入该目录并在终端中使用以下命令:

git init

git add file1.csv

git commit -m "First commit"

git remote add origin <来自快速设置页面的Github url>

git push -u origin main

然后我得到了以下错误:

error: src refspec main does not match any

error: failed to push some refs to <url>

我搜索了解决方案,发现了这个:git error: failed to push some refs to remote 所选答案说:

如果在您本地工作时GitHub repo已经看到了新提交,我建议使用:

git pull --rebase origin master

git push origin master

我不理解的是,为什么在我电脑上创建了一个目录和一个仓库后会发生这种情况?在Github上没有向仓库作任何提交,那么为什么我还需要执行git pull呢?我甚至尝试了在一个新的空目录和新的空仓库中进行相同的操作,但结果仍然一样。

这可能是由于输入错误导致的。从技术上讲,该错误表示存储库为空或未进行任何提交。 - Amin Gheibi
1
您的新存储库有一个新提交,创建了一个新分支名称。为什么您认为这个新分支名称是“main”?默认的新分支名称实际上是“master”。您必须采取一些特定的操作来更改它。(未来的Git版本可能会有不同的初始默认名称,但目前仍然是“master”)。 - torek
3个回答

31

这是与 mastermain 争议相关的不愉快结果。

你的本地 GIT 客户端创建了一个名为 master 的默认分支(当你使用 git init 初始化 repo 时),但 GitHub 上的远程仓库没有 master - 而是称之为默认分支 main


解决方案 A - 如果你想将分支命名为 master

运行 git push -u origin master,而不是 git push -u origin main

或者 解决方案 B - 如果你想将分支命名为 main

在运行 git push -u origin main 前,先运行 git checkout -B main


1
就是这样。我再次重复了整个过程,但这次我使用了 git push -u origin master 命令,它成功了。谢谢! - IamWarmduscher
@IamWarmduscher 哎呀,你每次都要这样做吗?? - Kaleb Coberly
1
@KalebCoberly 不需要。只有在将本地存储库连接到源时才需要这样做。 - Petr Hejda
@IamWarmduscher,哈哈,谢谢。那就是我想说的。我猜现在对于GitHub来说,使用Git并解决我们所有的麻烦已经太晚了。 - Kaleb Coberly
@BrianWiley 如果是这种情况,可能是你的远程分支领先于本地分支,这是一个不同的问题。如果是这种情况,最好参考这篇文章进行解释:https://dev59.com/G2Ml5IYBdhLWcg3wiXZ7#18328842 - Petr Hejda
显示剩余3条评论

2

我使用了以下方法解决了这个问题

git branch -M master main

在那里,你只需要重命名分支。这解决了你所写的问题。

我是通过 Git 官方文档https://git-scm.com/docs/git-branch学习的。


1

大家好,首先切换到主分支:

git checkout main

合并到主分支后:

git merge master

最后的 git push:

git push

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