讲师中心 微信公众号
AI工具推荐 视频效率加速

Git怎么解决push时的非快进错误_Git如何处理rejected推送被拒绝【避坑】

阿强大大_2460

阿强大大_2460

发布时间:2026-04-06 08:56:34

|

715人浏览过

|

来源于php中文网

原创

git push提示“non-fast-forward”或“rejected”的根本原因是远程分支有新提交而本地未同步,Git为防覆盖他人工作默认拒绝非快进更新。

git怎么解决push时的非快进错误_git如何处理rejected推送被拒绝【避坑】

为什么 git push 会提示 “non-fast-forward” 或 “rejected”

根本原因是远程分支的最新提交不在你的本地分支历史中——换句话说,别人已经往远程推了新提交,而你本地还停留在旧版本上。Git 默认拒绝覆盖这种“非快进”更新,防止误删他人工作。

常见触发场景:git pull 没做就直接 git push;多人协作时队友先推送了;自己在其他机器改完又没同步就切回原环境推送。

  • 错误典型提示:! [rejected] main -> main (non-fast-forward) 或 ! [remote rejected] dev -> dev (refusing to update checked out branch)
  • 注意第二种带 refusing to update checked out branch 的,是远程仓库被设为裸仓以外的普通工作目录(极不推荐),需单独处理
  • 这不是网络或权限问题,和 SSH/HTTPS 认证成功与否无关

正确做法:先拉取再合并,而不是强制推送

绝大多数情况应该用 git pull 同步变更,让 Git 自动尝试 fast-forward 或创建 merge commit。

如果本地有未提交修改,git pull 可能失败,此时优先考虑:

  • 运行 git status 确认当前状态,尤其留意是否有 untracked / modified 文件
  • 若只是暂存了改动但没提交,可先 git stash → git pull → git stash pop
  • 若已提交但不想产生 merge commit,可用 git pull --rebase,它把你的本地提交“重放”到远程新基线上,保持线性历史
  • 避免无脑 git push --force,它会抹掉远程他人提交,协作中等同于删库跑路

git push --force-with-lease 什么情况下能用

仅当你确认远程分支只有你自己在写、且你只是想覆盖自己上次推送的“临时提交”(比如修正 commit message、撤回一个错推的调试提交)时,才考虑这个命令。

Git Factory
Git Factory

为每个编码任务配置并管理独立的 Git worktree,支持并行分支和清晰的 PR 工作流,避免合并冲突。

下载

它比 --force 安全,因为会检查远程引用是否和你本地记录的一致——如果别人在你 fetch 之后又推了,它就会中止,避免静默覆盖。

  • 使用前必须先 git fetch(或 git pull --rebase),确保你知道远程当前 HEAD 是什么
  • 不要对 main / master 这类保护分支使用,CI/CD 流水线可能已基于旧提交运行
  • 某些平台(如 GitHub)默认禁止 force-push 到 protected branches,即使加 --force-with-lease 也会被拒绝

远程是普通工作目录导致的 “refusing to update checked out branch” 怎么办

这是 Git 的安全限制:不允许向一个已检出分支(即远程仓库里 git status 显示有工作区)推送。根本解法是让远程变成裸仓库(bare repo)。

如果你控制远程服务器,立刻执行:

cd /path/to/remote/repo
git config --bool core.bare true

然后删掉所有工作区文件(rm -rf *,除 .git 外),再 mv .git/* . && rm -rf .git 把内容提一层——或者更稳妥:重新 git clone --bare 一份。

  • 如果远程是共享文件夹(比如 SMB/NFS),且无法改配置,唯一临时办法是登录远程机器,手动 git checkout 切走目标分支(例如切到 dev),再推送,但这治标不治本
  • 任何文档里教你在远程运行 git config receive.denyCurrentBranch ignore 的方案,都属于埋雷,会导致远程工作区和 Git 数据库不一致,后续 git status 显示混乱

真正麻烦的从来不是命令记不住,而是分不清“我该同步别人”和“我要覆盖别人”的边界。每次看到 rejected,先停三秒看一眼 git log --oneline --graph --all,比翻十篇教程都管用。

热门AI工具

更多
AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

8485

2026.01.21

GitHub官网入口版本汇总
GitHub官网入口版本汇总

本专题整合了GitHub入口版本地址汇总,阅读专题下面的文章了解更多详细内容。

858

2026.04.02

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

6099

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

1780

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

1054

2023.07.24

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3977

2024.04.09

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3721

2024.04.09

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2645

2023.06.29

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

0

2026.10.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 8万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn