git push 报错 error: src refspec master does not match any 解决

真是TN的邪了门了,今天在Gitee上创建了一个新项目,然后要把本地的代码push上去时,报了如下错误:

➜  *** git:(main) git push -u origin "master"
error: src refspec master does not match any
error: failed to push some refs to 'https://gitee.com/***/***.git'

用了这么多年git也没见过这个啊
咱们哪见过这种场面啊,赶紧百度走起来。
网上啊,真是什么五花八门的说法都有。

但是这时,注意嗷,很快嗷,我发现本地分支名为 main。怪不得,往master分支上push,push不了呢。
果然,这就是个突破口。我也记起昨天升级了xcode tools,里面的git肯定也升级了。至于把默认分支名改成了main是git做的还是Apple做的就不去深入探究了(因为我这里用的是Apple Git)。

那么Git为什么要把默认主分支名改成main呢?
其实,这就又是一个国外关乎ZZZQ的问题了。具体详细的原因可以到这篇文章中查看为什么Git分支开始从“master”变为“main”了?,这里简单截个图。
在这里插入图片描述
在这里插入图片描述

既然知道了原因,接下来就好搞了。
解决方法大致分为两种:1.把git默认分支名改回master。2.配合修改主分支为main。

1.把git默认分支名改回master
由于我这里要往Gitee提交代码,Gitee的默认主分支还是master,所以这里选择修改git的默认分支名。
在终端中执行如下命令:

git config --global init.defaultBranch master

查看配置是否生效:

vim /Users/[你的账户名]/.gitconfig

在这里插入图片描述
配置成功。
接下来重新init本地的代码。
在这里插入图片描述
默认分支名就变成master了。之后再push就可以成功了。

2.配合修改主分支为main
如果远程和本地本来都是master主分支。那么可以用如下方法修改主分支为main。

首先在本地更改分支

git branch -m master main

执行完本地只有main分支,没有了master分支。

接下来将新命名的main分支推送到远程仓库

git push -u origin main

因为远程仓库里没有main分支,这时候会自动创建main分支。

接下来将HEAD指向main分支

git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main

最后删除远程仓库中旧的master分支

git push origin --delete master

参考资料
https://pages.carm.cc/doc/branch-main.html
https://www.jianshu.com/p/098c77d891a2

猜你喜欢

转载自blog.csdn.net/sdujava2011/article/details/131130407