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

git revert commit和undo commit的区别

在 Git 中,​revert commit​ 和 ​undo commit(通常通过 git reset实现)​​ 都是撤销更改的操作,但它们的底层机制、安全性和适用场景有本质区别:


1. ​git revert(Revert Commit)​

  • 作用原理​:

    创建一个新的提交,该提交的内容是撤销目标提交的更改​(相当于反向补丁)。

    例如:若原提交修改了文件 A.txtrevert会生成一个新提交,将 A.txt改回原样。

  • 特点​:

    • ✅ ​不修改历史记录​:原提交依然存在于 Git 历史中,只是新增了一个“撤销”提交。

    • ✅ ​安全协作​:适合撤销已推送到远程仓库的提交(无需强制推送)。

    • ❌ ​历史变长​:会新增一个提交,而非删除旧提交。

  • 命令示例​:

    git revert <commit-hash>  # 撤销指定提交
  • 适用场景​:

    撤销公共分支(如 main/master)上的错误提交,避免影响协作者。


2. ​git reset(Undo Commit)​

  • 作用原理​:

    直接移动分支指针​(如 HEAD),丢弃目标提交之后的所有更改(或将其移到暂存区/工作区)。

    例如:若历史是 A→B→CresetB会直接删除 C

  • 特点​:

    • ⚠️ ​重写历史​:原提交从分支历史中消失(可通过 git reflog找回)。

    • ⚠️ ​危险协作​:若已推送到远程,需强制推送(git push --force),可能破坏他人代码。

    • ✅ ​彻底撤销​:本地提交可完全清除(无残留)。

  • 常用选项​:

    • --soft:保留工作目录和暂存区的更改(撤销提交但保留修改)。

    • --mixed(默认):保留工作目录更改,但重置暂存区。

    • --hard:​彻底丢弃工作目录和暂存区的更改(慎用!)。

  • 命令示例​:

    git reset --hard <commit-hash>  # 彻底回退到指定提交(丢弃之后所有更改)
  • 适用场景​:

    撤销本地未推送的提交,或清理实验性分支。


关键区别总结

特性

git revert

git reset

历史记录

新增撤销提交,原提交保留

删除目标提交后的历史(重写历史)

安全性

安全,适合公共分支

危险,仅限本地或私有分支

远程推送

无需强制推送

--force(可能破坏协作)

数据丢失风险

无(原提交仍在)

有(--hard会永久丢弃更改)

本质

创建反向补丁

移动分支指针


如何选择?

  • 撤销已推送的提交​ → 用 git revert(安全)。

  • 撤销本地未推送的提交​ → 用 git reset(彻底)。

  • 协作分支中永远避免 git reset --hard+ 强制推送(除非团队明确允许)。

http://www.dtcms.com/a/494574.html

相关文章:

  • HTTP 协议的演进之路:从 1.1 到 3.0
  • 开源CICD工具Arbess,从安装到入门零基础指南
  • Maya动画基础:自动关键帧切换、曲线图编辑器、摄影机录制动画
  • Unreal5从入门到精通之一些有用的编辑器首选项
  • 深度解析:HTTP/2 与 HTTP/3 的适用场景与技术取舍
  • 三勾软件| 用SpringBoot+Element-UI+UniApp+Redis+MySQL打造的点餐连锁系统
  • 优化网站多少钱网站怎么做排查修复
  • 成都最好的网站推广优化公司学ui需要什么基础呢
  • 高并发系统性能测试:JMeter_Gatling 压测实战,测试场景设计与结果分析
  • 高并发体育直播平台架构实战:熊猫比分源码设计解析
  • 重庆网站建设开发wordpress哪里查看id
  • Docker下部署RocketMQ5.3.3
  • 桥田动态 | 多展位跨域协同,桥田快换盘持续赋能机器人“无界切换”
  • [AI学习:SPIN -win-安装SPIN-工具过程 SPIN win 电脑安装=accoda 环境-第三篇:解决报错]
  • 我有域名怎么做网站免费开网店app
  • iOS八股文之 多线程
  • C++ 方向 Web 自动化测试入门指南:从概念到 Selenium 实战
  • 掌握 iOS 26 App 运行状况,多工具协作下的监控策略
  • 软考 系统架构设计师系列知识点之杂项集萃(176)
  • Apache RocketMQ在Windows下的保姆级安装教程(含可视化界面安装)
  • TypeScript类型系统:从原始到对象的实战精要
  • Git 提交消息规范:理解 fix、feature 等关键词的含义
  • PostgreSQL 表达式
  • 库早报|新华社:增材制造作为新质生产力持续突围;刘宇宁自曝是3D打印玩家;易加三维中标1166.8万元项目
  • 建设模板类网站北京时间网站建设
  • 如何使用现有工具进行 .NET 8 迁移 Wpf
  • 云计算生态及学习方向和就业领域方向
  • 探域科技在AI电商应用调研报告
  • 做淘宝客网站需要什么五种网站类型
  • 期中考试几何命题难?大角几何让出卷效率翻倍,支持导出黑白试题风!