git reset 与 git revert 区别

先设定场景

你们两个人:你 + 同事小王共用一个远程代码仓库(GitHub/GitLab 那种)

时间线按顺序来:

  1. 原本代码版本:版本 A(大家都一样)
  2. 改了代码,提交了 版本 B
  3. 你把版本 B 推到远程
  4. 小王已经拉过代码,他本地现在也是:版本 A → 版本 B

现在你后悔了,不想要版本 B 了,想回到版本 A

第一种:你用了 git reset(危险 ❌)

你本地操作

你执行 git reset,直接把本地历史删掉版本 B 你本地变成:只有版本 A,版本 B 凭空消失了

然后你强行推远程:

复制代码
git push -f

远程仓库也被你强行改成:版本 B 被抹掉、没了

现在出事了!

你这边:正常,回到 A 了

小王那边就炸了:

小王本地明明有:A → B 但远程现在变成:只有 A,B 不见了

小王一拉代码 Git 直接懵了:

我本地有个版本 B,远程怎么凭空消失了?历史对不上、时间线断裂、版本冲突爆炸

小王直接报错、拉不下来、合并不了、代码崩乱团队直接没法协作了。


第二种:用 git revert(安全 ✅)

同样场景:你不想要版本 B,想变回 A

你执行:

复制代码
git revert 版本B的id

Git 不会删掉历史!而是自动帮你再生成一个 版本 C 版本 C 的作用就是:把版本 B 做的修改,全部反向撤销

时间线变成:A → B → C

  • 代码效果:回到跟 A 一模一样
  • 但历史记录完整保留,没有任何记录被删除

你推到远程,小王拉代码:正常更新、正常合并、完全不报错、不乱版本

一句大白话总结

  • git reset = 偷偷把之前那页纸撕掉,假装没写过 → 别人手上还留着旧纸,两边对不上,直接崩。
  • git revert = 不撕纸,再写一页新的,把之前写错的划掉 → 本子完整,所有人都能正常接着看。
相关推荐
摇滚侠34 分钟前
IDEA 创建 Java 项目 推送到远程 Git 仓库
java·git·intellij-idea
稷下元歌1 小时前
7天学会plc加机器视觉关于运动控制部份,配套视频在bib
开发语言·c++·git·vscode·python·docker·pip
tealcwu1 小时前
【Git 实战】三类方案实现一键推送多端仓库(Gitee & GitHub)
git·gitee·github
摇滚侠2 小时前
git ignore 忽略 .idea 目录 全新项目(尚未提交过 .idea).idea 已经被 Git 跟踪(已提交过)
java·git·intellij-idea
之歆6 小时前
Day05_Git 版本控制完全指南:从入门到精通的专业实践
git
Python私教11 小时前
Git 撤销与回退避坑指南:reset / revert / restore 到底用哪个(2026 实战)
git
流浪00111 小时前
Linux篇(九):一文搞懂 Git:版本控制的原理与实操指南
git
Ws_12 小时前
Git + Gerrit 第九课:cherry-pick 挑选提交
git
之歆14 小时前
Day04_Git完全指南:从入门到精通的版本控制精通
git
码出财富14 小时前
InsForge 后端分支管理实战指南
git