You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

将项目推送到GitHub仓库时出现main分支推送被拒绝([rejected])错误,该如何解决?

解决Git推送时「! [rejected] main -> main (fetch first)」的错误

嘿,这个问题我之前协作开发时经常碰到,其实本质就是远程仓库有你本地没有的更新——可能是小伙伴推了新内容,也可能是你在别的设备提交过代码没同步回来。Git怕直接推送会覆盖这些变更,所以干脆把你的请求拒了。下面给你分场景一步步解决:

常规场景:保留本地修改并合并远程变更

  • 第一步:拉取远程最新代码到本地
    打开终端执行这条命令,把远程分支的内容同步到本地:

    git pull origin main
    

    (如果你的工作分支不是main,把命令里的main换成你的分支名就行,比如dev
    这条命令会自动把远程变更拉下来,和你本地的代码合并。

  • 第二步:处理合并冲突(如果有的话)
    如果远程修改和你的本地改了同一个地方,Git会提示冲突文件。打开这些文件,你会看到类似这样的标记:

    <<<<<<< HEAD
    你本地写的代码内容
    =======
    远程仓库的代码内容
    >>>>>>>> 8a32f4d... 远程提交的说明文字
    

    手动调整内容(保留需要的部分),删掉这些冲突标记。处理完后执行:

    git add <冲突文件名>
    git commit -m "解决合并冲突,同步远程变更"
    
  • 第三步:重新推送代码
    合并完成后,再执行推送就没问题了:

    git push origin main
    

特殊场景:放弃本地修改,直接同步远程代码

如果你确定本地的修改不重要,或者想完全用远程代码覆盖本地(谨慎操作!这个会丢失所有本地未推送的修改),可以这么做:

  • 先拉取远程最新代码但不合并:
    git fetch origin main
    
  • 把本地分支强制重置为远程分支的状态:
    git reset --hard origin/main
    
  • 最后推送(此时本地和远程完全一致,推送会直接成功):
    git push origin main
    

小提醒

平时推送代码前,最好先跑一遍git pull同步下远程状态,尤其是多人协作的项目,能避免大部分这类冲突问题~

内容的提问来源于stack exchange,提问作者firatinlkc

火山引擎 最新活动