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 = 不撕纸,再写一页新的,把之前写错的划掉 → 本子完整,所有人都能正常接着看。
相关推荐
晴雨天️23 分钟前
Git工具使用指南
笔记·git
酷可达拉斯3 小时前
Linux操作系统-简单内核优化
linux·git·php
触底反弹16 小时前
🔥 Git 从零到精通:彻底搞懂核心概念与工作原理
git·面试·开源
tokenKe20 小时前
Epic Games 发布下一代版本控制系统 Lore:被 HN 干到 1000+ 分的“游戏版 Git“
git·游戏
Eira-Z21 小时前
git(持续学习中...)
git·学习
leoZ2311 天前
Git 集成实战完全指南(五):Git Blame 与历史追踪
大数据·git·elasticsearch
leoZ2311 天前
Git 集成实战完全指南(六):Git 标签与版本管理
大数据·git·elasticsearch
leoZ2312 天前
Git 集成实战完全指南(三):自动化 Commit 与 PR
大数据·git·elasticsearch
国服第二切图仔2 天前
002-Claude Code 项目解读:入口与启动流程
linux·git·ubuntu
天空'之城2 天前
VS Code Git 工作树:告别频繁切分支,实现多分支并行开发实战方案
git·vscode·版本控制·嵌入式开发·开发效率·worktree·多分支管理