news 2026/9/30 13:02:01

reset和revert最佳实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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
  • 整理提交历史
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 9:45:47

Springboot基于SpringBoot的优选超市购物系统890fg(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能&#xff1a;用户,超市,商品分类,商品信息开题报告内容基于Spring Boot的优选超市购物系统开题报告一、研究背景与意义1.1 研究背景随着互联网技术的飞速发展和消费者购物习惯的变化&#xff0c;线上购物已成为现代生活的重要组成部分。超市作为零售业…

作者头像 李华
网站建设 2026/9/28 23:45:52

区块链 Web3 项目的费用

开发一个区块链 Web3 项目的费用跨度较大&#xff0c;主要取决于你是选择自建联盟链、接入第三方商业链&#xff0c;还是开发公有链 DApp。国内市场环境下&#xff0c;费用主要由基础设施、开发人力、安全审计和合规备案四部分组成。一、 基础设施与底层链成本这是项目的“底座…

作者头像 李华
网站建设 2026/9/30 16:17:33

基于springboot + vue智能农田管理系统(源码+数据库+文档)

智能农田管理 目录 基于springboot vue智能农田管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue智能农田管理系统 一、前言 博主介绍&…

作者头像 李华
网站建设 2026/9/30 17:06:25

高并发场景下的“超卖”问题测试方案

理解“超卖”的本质与测试价值‌ “超卖”&#xff0c;简而言之&#xff0c;就是在库存数量有限的情况下&#xff0c;由于系统处理逻辑或数据一致性问题&#xff0c;成功卖出的商品数量超过了实际物理库存。在高并发场景下&#xff0c;多个用户在同一毫秒内对同一商品发起购买…

作者头像 李华