当前位置: 首页 > news >正文

Git 提交与推送常见报错处理笔记

文章目录

    • 前言
    • 一、提交时被 `ESLint` 拦截
      • 1.1 报错现象
      • 1.2 报错原因
      • 1.3 使用场景举例
      • 1.4 推荐解决方式
      • 1.5 临时跳过检查
    • 二、推送时报 non-fast-forward
      • 2.1 报错现象
      • 2.2 报错原因
      • 2.3 使用场景举例
      • 2.4 推荐解决方式
      • 2.5 如果出现冲突
      • 2.6 不推荐的方式
    • 三、两个问题的区别
      • 3.1 commit 失败
      • 3.2 push 失败
    • 四、常用命令总结
      • 4.1 正常提交
      • 4.2 跳过提交前检查
      • 4.3 推送前同步远程
      • 4.4 解决 `rebase` 冲突
      • 4.5 放弃 `rebase`
    • 总结

前言

在日常开发中,git commitgit push看似简单,但经常会遇到提交失败、推送被拒绝等问题。

本文整理两个常见场景:提交时被ESLint拦截,以及推送时出现non-fast-forward报错。

一、提交时被ESLint拦截

1.1 报错现象

执行提交命令:

gitcommit-m"邮箱后缀已去除"

出现类似信息:

Running ESLint on web module eslint--fix[FAILED]husky - pre-commit script failed

并提示某些文件存在未使用变量:

error Remove this useless assignment to variable"router"error Remove this useless assignment to variable"docLink"

如图所示:

1.2 报错原因

这不是 Git 本身报错,而是项目配置了提交前检查。

常见流程是:

git commit ↓ husky 触发 pre-commit ↓ lint-staged 检查暂存文件 ↓ eslint --fix 检查代码 ↓ 发现错误,阻止提交

也就是说,只要暂存区里的文件存在ESLint error,提交就会被拦截。

1.3 使用场景举例

例如你修改了用户列表页面,但该文件里原本或本次改动后存在未使用变量:

constrouter=useRouter()

如果router没有被使用,ESLint就可能报错,导致提交失败。

1.4 推荐解决方式

优先修复ESLint报错。

例如删除未使用变量:

// 删除前constrouter=useRouter()// 删除后// 不再声明 router

然后重新提交:

gitadd.gitcommit-m"邮箱后缀已去除"

1.5 临时跳过检查

如果只是本地临时提交,并且确认代码可以接受,可以跳过pre-commit

gitcommit --no-verify-m"邮箱后缀已去除"

简写:

gitcommit-n-m"邮箱后缀已去除"

注意:跳过检查不代表问题不存在,后续 CI 或团队检查仍可能失败。

二、推送时报 non-fast-forward

2.1 报错现象

执行:

gitpush

出现:

![rejected]current ->current(non-fast-forward)error: failed to push some refs hint: Updates were rejected because the tip of your current branch is behind

截图如下:

2.2 报错原因

这个错误表示:远程分支比你本地分支更新。

也就是说,在你提交之前,远程仓库已经有了新的提交。如果你直接推送,可能覆盖远程内容,所以 Git 拒绝了。

可以理解为:

远程分支:A → B → C 本地分支:A → B → D

远程有C,本地没有;本地有D,远程没有。此时不能直接 push。

2.3 使用场景举例

常见场景包括:

多人协作时,别人先推送了代码。

你在另一台电脑上推送过代码。

远程仓库有人合并了分支。

本地代码不是基于远程最新版本开发的。

2.4 推荐解决方式

先拉取远程代码,再推送。

推荐使用:

gitpull--rebasegitpush

--rebase的作用是:先把远程最新提交拉下来,再把你的本地提交接到最新提交后面。

结果类似:

远程:A → B → C 本地提交:D rebase 后:A → B → C → D

这样提交历史更清晰。

2.5 如果出现冲突

执行:

gitpull--rebase

如果出现冲突,Git 会提示冲突文件。

处理步骤:

gitstatus

查看冲突文件。

手动解决冲突后:

gitadd冲突文件gitrebase--continue

最后推送:

gitpush

2.6 不推荐的方式

不要随便使用强制推送:

gitpush--force

强制推送可能覆盖远程提交,导致别人代码丢失。

只有在非常确定远程提交可以被覆盖时,才考虑使用。

更安全的强推方式是:

gitpush --force-with-lease

但多人协作中仍需谨慎。

三、两个问题的区别

3.1 commit 失败

git commit失败通常发生在本地。

原因可能是:

  1. 代码检查失败。

  2. 格式校验失败。

  3. 测试未通过。

  4. 提交信息不符合规范。

本质是:代码还没有成功生成本地提交。

3.2 push 失败

git push失败发生在本地提交之后。

原因通常是:

  1. 远程分支更新了。

  2. 本地分支落后远程。

  3. 存在提交历史冲突。

本质是:本地提交已有,但不能直接同步到远程。

四、常用命令总结

4.1 正常提交

gitadd.gitcommit-m"提交说明"

4.2 跳过提交前检查

gitcommit --no-verify-m"提交说明"

4.3 推送前同步远程

gitpull--rebasegitpush

4.4 解决rebase冲突

gitstatusgitadd冲突文件gitrebase--continuegitpush

4.5 放弃rebase

如果rebase过程中发现问题,可以取消:

gitrebase--abort

总结

git commitESLint错误,说明本地提交前检查未通过,优先修复代码问题,必要时可用--no-verify临时跳过。

git pushnon-fast-forward,说明远程分支比本地更新,需要先执行:

gitpull--rebasegitpush

开发中建议养成习惯:提交前保证代码检查通过,推送前先同步远程分支。这样可以减少冲突,也能避免覆盖他人的代码。

http://www.jsqmd.com/news/841197/

相关文章:

  • MD5哈希函数在高并发数据处理中的性能陷阱与优化实践
  • 3步让Windows电脑变身苹果设备:AirPlay 2投屏完全指南
  • 大语言模型驱动SVG代码生成:原理、实践与应用前景
  • 30 分钟 Shell 光速入门教程
  • Adobe-GenP:告别订阅烦恼,5分钟解锁Adobe全家桶完整功能
  • 导师没告诉你的文献综述捷径:用NotebookLM自动生成“理论框架-研究缺口-方法适配”闭环论证链(限前200名领取结构化Prompt库)
  • AMD锐龙AI嵌入式P100处理器:全集成、高可靠、长周期的工业与汽车应用解析
  • jQuery 选择器详解
  • 安顺万足金回收银戒指回收铂金戒指回收碎钻回收奢侈品首饰回收高价多少钱一克同城价格查询上门上门估价闲置变现转让靠谱权威排行榜 - 检测回收中心
  • 使用curl在ubuntu终端快速测试taotoken的api连通性与模型列表
  • Win11Debloat终极指南:快速清理Windows系统,释放20GB空间
  • 基于Docker构建本地交互式工程实验场:多语言环境与快速开发实践
  • Redis如何限制客户端输出缓冲区的过度膨胀
  • GlosSI系统级Steam控制器:打破平台限制的终极解决方案
  • 分布式系统限流熔断实战:保护微服务稳定性
  • Win11Debloat终极指南:如何快速优化Windows 11系统性能与隐私
  • 安阳金条回收银条回收铂金项链回收克拉钻石回收婚嫁首饰回收高价多少钱一克同城价格查询上门上门估价闲置变现转让靠谱权威排行榜 - 检测回收中心
  • 3个理由告诉你为什么Textractor是游戏文本提取的最佳选择
  • 鞍山黄金吊坠回收同城白银回收同城铂金回收钻石首饰回收本地贵金属回收本地排名正规门店专业推荐哪家靠谱二手哪家强 - 检测回收中心
  • 宝塔面板SSH连接失败_检查密钥配置与端口监听
  • 基于LoRA的文档知识注入:轻量化大模型垂直领域应用实践
  • Activiti 教程,吃透 SpringBoot 整合工作流 Activiti7 超详细教程,笔记 6-10
  • 告别对比学习:手把手复现DINO自蒸馏训练,看ViT如何‘自学成才’
  • Remote-Redux-DevTools 性能优化技巧:减少内存占用和提升传输效率的10个方法
  • 书成紫微动,律定凤凰驯:文人只解字面意,不懂海棠山铁哥天命道韵
  • Taotoken 模型广场功能如何辅助开发者进行模型选型与初步测试
  • 62 Nginx跨域问题的案例演示
  • 2026年云南画室综合实力调研:云南本土优质画室排名前十机构专业解读 - 云南美术头条
  • 从零构建实时协作任务管理系统:全栈架构与实战解析
  • 嵌入式开发中堆栈8字节对齐:ARM Cortex-M架构的硬件要求与实战解析