ตัวอย่างบทเรียน

撤销操作详解:restore、reset、revert的正确使用与风险

在面试和实际工作中最常遇到的问题之一就是如何撤销已做的修改。我们将深入解析三个具有不同'撤销深度'的Git工具,重点讲解最关键的部分:展示具体场景,说明reset --hard如何破坏团队协作,以及revert作为安全替代方案的优势。通过真实案例,分析正确和错误决策带来的实际后果。

git restore git reset git revert
คุณจะเรียนรู้อะไรในบทเรียนนี้
  • 掌握在任何阶段(工作区、暂存区、提交历史)都能自信地撤销修改的能力
  • 深刻理解reset和revert的根本区别,并知道在何种情况下使用哪种命令更合适
  • 学会避免在团队协作仓库中进行撤销操作时新手常犯的典型错误

จุดเริ่มต้นของบทเรียน

Git restore:文件的撤销按钮

  • Git restore — 撤销未提交的更改
  • 就像编辑器中的'撤销'按钮
  • 安全 — 不会改变提交历史
  • 将文件恢复到最近一次保存的状态

想象一下,您不小心保存了一个有错误的文件,想要恢复原状。Git restore就像一个神奇的撤销按钮 — 它可以将文件恢复到最近一次提交的状态。与其他撤销命令不同,restore只对未提交的更改有效,对项目历史记录完全安全。当您需要快速修复意外修改而又不想影响历史记录时,这是首选工具。

撤销工作目录中的更改

  • git restore file.txt — 将文件恢复到最近一次提交
  • 撤销工作目录中的所有更改
  • 安全 — 可以通过编辑器恢复更改
  • 恢复前请检查git status状态

假设您花了半小时修改配置文件,但发现自己走错了方向。与其手动撤销每个更改,不如执行git restore config.yml。文件会立即恢复到最近一次提交的状态。就像您没有保存就关闭了文件,但可以确保返回到可用版本。

# 演示文件恢复
$ echo "错误的修改" > main.py
$ git status
$ git restore main.py
$ cat main.py
$ git status

从索引中移除文件

  • git restore --staged file.txt — 从索引中移除文件
  • 保留工作目录中的更改
  • 注意:不加 --staged 会丢失更改
  • 执行前务必检查 git status

一个常见错误是不小心将多余文件添加到索引中。比如,您执行了 git add . 并意外添加了临时配置文件。使用带有 staged 标志和文件名 settings.tmp 的 git restore 命令可以安全地将其从索引中移除,同时保留工作目录中的所有更改。如果不加 staged 标志,您可能会丢失工作成果,因此在执行 restore 前务必用 git status 检查状态。现在您已经学会了如何撤销提交前的更改。但如果错误已经进入历史记录呢?这时就需要用到 git reset。

# 意外将文件添加到索引
$ git add config.tmp
$ git status

# 从索引中移除,保留更改
$ git restore --staged config.tmp
$ git status

# 检查文件是否仍在工作目录中
$ ls -la config.tmp

บทเรียนฉบับเต็มใช้ได้เมื่อสมัครสมาชิก

ฉบับเต็มมีสไลด์เพิ่มอีก 24 สไลด์

วิดีโอ สไลด์ทั้งหมด โน้ต แบบทดสอบ AI ติวเตอร์ และการสัมภาษณ์จะเปิดหลังเข้าสู่ระบบและสมัครสมาชิก

เข้าสู่ระบบหรือลงทะเบียน สมัครสมาชิก

เนื้อหาบทเรียน

  1. Git restore:文件的撤销按钮
  2. 撤销工作目录中的更改
  3. 从索引中移除文件
  4. Git reset:历史回滚的工作原理
  5. 安全的 reset --soft:更改保留在索引中
  6. 标准 reset --mixed:工作目录中的更改
  7. 危险的 reset --hard:永久删除
  8. Reset:三种模式,一个命令
  9. git reset --soft:安全重写历史
  10. 何时使用 --mixed 和 --hard
  11. 检查清单:如何选择reset?
  12. 为什么不能直接删除错误?
  13. git revert在实际中如何工作
  14. 一次性撤销多个提交
  15. Reset:本地重写历史记录
  16. Revert:安全地撤销更改
  17. 推送时会发生什么:reset vs revert
  18. 为什么 reset --hard 很危险
  19. 数据丢失示例
  20. 如何恢复数据
  21. 共享分支回滚的风险
  22. 通过 revert 安全回滚
  23. 正确的操作步骤
  24. 何时使用:restore、reset 还是 revert
  25. 个人历史记录与共享历史记录的处理规则
  26. 错误处理分步指南
  27. 总结与任务:撤销操作大师

บทความเกี่ยวกับบทเรียนนี้

บทเรียนทั้งหมดในคอร์สนี้

  1. 从零开始:成为自信的Git开发者
  2. 为什么必须掌握Git——不懂Git就找不到工作的原因
  3. 安装与配置:准备首次使用Git
  4. 第一个仓库:init、add、commit 和索引的魔力
  5. 版本控制历史解读:log、diff、show 与历史记录导航
  6. Git分支:代码的平行宇宙
  7. 撤销操作详解:restore、reset、revert的正确使用与风险
  8. GitHub与远程仓库:将代码存入云端
  9. 团队协作:Fork、功能分支和拉取请求
  10. 代码合并冲突:不慌张,理解与解决之道
  11. 真实团队中的Git流程:如何选择适合的工作流
  12. 高级 Git 工具:rebase、stash、cherry-pick 和标签
  13. 期末项目:模拟真实团队开发