发布于2026-07-09 阅读(0)
扫一扫,手机访问
先说个日常翻车的高频场景:折腾了半天,准备把本地项目推上远程仓库,结果一行红字怼回来——“failed to push some refs”。懵了吧?
直接推不上去,八成是下面这几种情况:本地没初始化、远程那边儿跑出来一个README导致冲突、或者git remote add时复制的URL压根儿就是错的。不是什么权限问题,就是流程上少了一两步。今天把这几个坑一个个踩平了再说。

这事儿看着简单,但翻车的次数可不少。很多人习惯性“cd进一个目录”,比如跑到了src/或者dist/下面,然后敲git init,结果只把子目录纳入了管理。真正的项目根目录,是包含package.json、README.md、或者你的主入口文件——比如index.html、main.py——的那个层级。
怎么确认?用pwd(mac/Linux)或者cd(Windows)看一眼当前路径。执行完git init后检查有没有生成.git/文件夹,注意得开启显示隐藏文件才能看见。万一误操作了,直接删掉那个.git文件夹重来。别上网搜什么git deinit,这命令不存在。
一个值得警惕的点是:你在Gitee、GitHub或者GitLab上新建仓库时,平台默认会给你勾选一个“使用README初始化”的选项。只要勾上了,远程那边就会产生一个commit。而你本地呢?是个空仓库。这时候你直接git push,Git会毫不留情地拒绝你,告诉你non-fast-forward或者failed to push some refs。
正确的做法是:新建远程仓库时,务必取消勾选README相关选项。如果已经手快勾上了,也别慌,先执行git pull origin main --allow-unrelated-histories合并一下。注意分支名可能是main也可能是master,用git branch -r查看远程分支名。合并后大概率会产生冲突,最常见的就是README.md。手动删掉或者保留一方,搞定。
复制仓库地址的时候,Gitee、GitHub的页面上给的链接默认是HTTPS格式,比如https://gitee.com/xxx/yyy.git。但如果你之前配过SSH key,就得换成SSH地址,比如git@gitee.com:xxx/yyy.git。混着用?认证失败,或者403。
查一下当前remote:运行git remote -v,看一眼输出的URL是https://开头还是git@开头。如果不对,用git remote remove origin删掉,然后重新添加正确的地址。
如果选SSH方式,别忘了提前测一下连通性:ssh -T git@gitee.com。
-u,且分支名要对得上如果你执行git push origin master,却得到了一句“upstream not set”的报错,说明你还没建立本地分支和远程分支之间的追踪关系。而-u(即--set-upstream)就是用来干这件事的。
先确认当前分支名:git branch,看哪个分支前面有个*。新项目通常默认是master,但GitHub默认是main,Gitee新建仓库也可能是main。如果本地是main,远程那边也期望是main,那就用git push -u origin main。如果不想改本地分支名,但又想推到远程的master上,可以用git push -u origin main:master。
千万别随意加-f。只有在明确要覆盖远程历史时才用,首次推送几乎用不到。
最容易被忽视的两个环节——分支名不一致和远程有README冲突——占了首次推送失败的七成以上。操作前花10秒钟看一眼git branch -r和远程仓库页面,比报错后再翻日志快得多。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8