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

reset和revert最佳实践

git revert = 新增一个“反向提交”,历史不变
git reset = 移动 HEAD / 分支指针,历史被重写


一、git revert:不修改已有 Git 历史

1️⃣ revert 做了什么?

gitrevert<commit>

它的本质是:

  • 生成一个新的 commit
  • 这个新 commit 的内容 = 把指定 commit 的修改「反向再做一遍」

📌原来的 commit 还在,历史是线性的


2️⃣ revert 之后的 git log 长什么样?

假设原历史:

A --- B --- C --- D (HEAD)

执行:

gitrevert C

结果:

A --- B --- C --- D --- E (HEAD)

其中:

  • C:原提交(还在)
  • E:revert C 的提交(内容上抵消 C)

📌Git 记录没有被删,没有被移动,只是多了一条提交


3️⃣ revert 的特点总结

安全

  • 适合已经 push 到远端的分支
  • 不影响其他人

历史会“变长”

  • 会看到「提交 + revert 提交」

📌 面试一句话:

revert 是“用新的提交修正旧的提交”,不破坏历史


二、git reset:直接改 Git 历史(移动指针)

reset 的核心动作只有一个:

把 HEAD / 当前分支指针,指向一个旧的 commit


1️⃣ reset 的三种模式(重点)

gitreset --softgitreset --mixed(默认)gitreset --hard

不管哪种

提交历史都会被改(HEAD 回退)


三、git reset 执行后,git 记录长什么样?

原始提交历史

A --- B --- C --- D (HEAD)

执行:

gitreset --hard B

reset 之后:

A --- B (HEAD)

📌C、D 在当前分支历史中消失了

⚠️ 但注意一句非常关键的点:

C、D 并不是立刻被删除,只是“不可达”了

只要还没被 GC(垃圾回收),还能用git reflog找回。


四、reset 三种模式对「工作区 & 暂存区」的影响

1️⃣ --soft(只改 HEAD)

gitreset --soft B

结果:

  • 提交历史:❌ 被改(C、D 消失)
  • 暂存区:✅ 保留
  • 工作区:✅ 保留

📌 等价于:

“撤回提交,但改动还在,且已经 add 过了”


2️⃣ --mixed(默认)

gitreset B

结果:

  • 提交历史:❌ 被改
  • 暂存区:❌ 清空
  • 工作区:✅ 保留

📌 等价于:

“撤回提交 + 取消 add”


3️⃣ --hard(最危险)

gitreset --hard B

结果:

  • 提交历史:❌ 被改
  • 暂存区:❌ 清空
  • 工作区:❌ 清空

⚠️代码直接没了


五、revert vs reset 终极对比表(面试版)

对比点git revertgit reset
是否修改已有提交历史❌ 不修改✅ 修改
是否生成新 commit✅ 是❌ 否
提交记录是否“变短”❌ 不会✅ 会
是否安全用于已 push 分支✅ 安全❌ 危险
适合场景回滚线上/公共分支本地整理提交

六、真实工程中的使用建议

✅ 已 push / 多人协作分支(main、develop)

只能用 revert

gitrevert<commit>

✅ 本地分支 / 还没 push

reset 非常好用

gitreset --soft HEAD~1

用于:

  • 合并提交
  • 修改 commit message
  • 整理提交历史
http://www.gsyq.cn/news/142564.html

相关文章:

  • 网络安全要学到什么程度,才能去大厂工作?
  • 2025年热门的杭州全屋定制设计/全屋定制公司本地热评榜 - 品牌宣传支持者
  • VMware新建Liunx虚拟机网络设置获取ip
  • Pickering 10-785B-522
  • MVTracker:一种多视角三维点跟踪方法,只需少量摄像头即可实现高精度跟踪
  • 基于Spring Boot和Dubbox的分布式API接口与后台管理系统设计与实现
  • 微型磁力泵进阶之选:卓越性能如何化解行业应用难题 - 品牌2025
  • MHT-FN321 光纤组合导航系统技术指南:轻量化高帧率导航的工程实现与协议解析
  • 基于微服务架构的智能运维堡垒机系统设计与实现
  • 百考通AI:您的智能项目开发加速器,海量源码即取即用!
  • 一文了解:Multi-Agent多智能体核心架构的协调与调度模块是如何工作的?
  • 潮流新纪元:专业活动策划执行与布置,打造沉浸式体验
  • 蓝丝带:很多妈妈不知道,这家专业产后康复品牌已服务数十万家庭
  • 【笔记】pwn.college之Pwntools Tutorials(pwn.college)
  • 外部群自动化中的“静默心跳”存活检测
  • 基于java+ vue网上订餐系统(源码+数据库+文档)
  • 数据分层架构的平衡艺术:在性能、成本与一致性之间寻找最优解
  • 高并发场景下的“超卖”问题测试方案
  • 精准守护:310nm UVB LED 为爬宠提供安全高效的健康光照方案
  • 第1章:JavaWeb基础概念
  • AI选聘考务系统:技术重构招聘考务的“高效与公平”
  • 个人开发者接入拼多多开放平台
  • Qoder Vibe Coding 体验营:从灵光一现的想法到云端上线,最快要多久?
  • python某电梯厂固定资产管理系统excel数据导入 可视化_vfa9327d_Pycharm vue django flask
  • 2025年学术AI写作工具终极测评:5款利器全面解析,学术党必备!
  • 告别选择困难:五大装修品牌深度解析与选择指南 - 品牌测评鉴赏家
  • 【计算机毕业设计案例】基于Java的外卖订餐系统基于Java的外卖系统(程序+文档+讲解+定制)
  • 2025年冷镀锌打包带源头厂家口碑排行,这十家备受推崇,钢管打包带/镀锌打包钢带/铁打包带/打包铁条/冷镀锌打包带冷镀锌打包带厂家找哪家 - 品牌推荐师
  • python玉米病虫害远程咨询系统的设计与实现_bydat7w3_Pycharm vue django flask
  • 2025十大AI优化公司重塑品牌营销新范式抢占AI认知入口! - 呼呼拉呼