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

高级 Git 工具:rebase、stash、cherry-pick 和标签

本课程将介绍区分 Git 熟练用户与仅掌握基础知识的用户的进阶工具。我们将探讨 rebase 作为 merge 的替代方案,分析其在哪些情况下能使提交历史更清晰,又在哪些情况下可能导致混乱。课程还涵盖 stash 的快速保存未完成工作的功能,cherry-pick 的精确提交移植能力,以及用于标记发布版本的标签系统。

git rebase git stash git cherry-pick
คุณจะเรียนรู้อะไรในบทเรียนนี้
  • 掌握使用 git stash 在不同任务间切换而不丢失修改的能力。
  • 理解 rebase 和 merge 的区别,并能根据具体场景做出明智选择。
  • 学会使用交互式 rebase 编辑提交历史,并掌握使用标签标记发布版本的技巧。

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

问题:如何暂存未完成的工作

  • 突发 bug 修复打断了您的工作
  • 未完成的代码不能提交
  • Git stash — 临时的更改存储区
  • 可以保存已跟踪和未跟踪的文件
  • 将工作目录恢复到干净状态

想象一下:您正在开发一个新功能,突然收到一个紧急的 bug 修复任务。您不想半途而废,但也不能提交未完成的代码。这正是 git stash 大显身手的时候——它就像您的数字暂存区。这就像在游戏中按下暂停键:当前进度被保存下来,您可以先去处理其他任务。当您回来时,一切都会保持原样,包括未跟踪的文件(如果您使用了 -u 标志的话)。这样您就不必同时记住多个任务了。

保存和查看更改

  • git stash save — 将更改保存到暂存区
  • git stash list — 显示已保存的更改列表
  • 每个 stash 都有一个唯一的 ID
  • stash@{0} — 最近保存的更改
  • 暂存区会保存工作目录的状态

让我们来学习如何使用 git stash。git stash save 命令会保存工作目录和暂存区的所有更改,让您回到干净的状态。您的工作成果不会丢失——它们会被保存在一个特殊的存储区中。要确认更改已保存,可以执行 git stash list。您会看到一个包含所有暂存任务的列表,每个都有像 stash@{0} 这样的唯一标识符。这在需要快速切换任务而又不想丢失进度时特别有用。

# 保存当前更改
git stash save "WIP: New feature login form"

# 检查已保存的更改列表
git stash list

# 查看最近一次 stash 的内容
git stash show -p

恢复暂存的工作

  • git stash pop — 应用并删除最近的暂存
  • git stash apply — 应用但不删除
  • 代码修改时可能出现冲突
  • 需要手动解决冲突
  • stash@{n} — 引用特定的暂存

当需要恢复暂存的工作时,您有两个选择。git stash pop 命令会应用最近保存的更改并将其从暂存列表中删除。如果您想查看更改或多次应用它们,请使用 git stash apply — 更改将保留在存储库中。请记住:如果自保存暂存以来代码发生了更改,可能会出现冲突。在这种情况下,Git 会报告问题,您需要手动解决这些冲突。

# 恢复最近的暂存
git stash pop

# 或者应用但不删除
git stash apply

# 按索引应用特定的暂存
git stash apply stash@{1}

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

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

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

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

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

  1. 问题:如何暂存未完成的工作
  2. 保存和查看更改
  3. 恢复暂存的工作
  4. 暂存的潜在风险
  5. 分支合并的工作原理
  6. Rebase:重写提交历史
  7. 使用场景:实用指南
  8. Rebase的风险:可能遇到的问题
  9. 什么是 rebase 及其用途
  10. 执行 rebase:逐步解析
  11. 解决 rebase 冲突
  12. 交互式 rebase:你的提交历史编辑器
  13. 交互式 rebase 的主要命令
  14. 实战:打造完美历史记录
  15. 注意:修改已发布的提交历史
  16. 为什么不应该对公共分支进行变基
  17. 如何从失败的变基中恢复
  18. 安全地修改提交历史
  19. 为什么需要Git的cherry-pick功能
  20. 如何使用git cherry-pick
  21. 如何选择:cherry-pick vs merge vs rebase
  22. Git标签:重要提交的标记
  23. 创建带注释标签和轻量标签
  24. 将标签发布到远程仓库
  25. 场景:开发中的热修复
  26. 通过rebase和cherry-pick集成更改
  27. 常见错误及避免方法
  28. 总结:Git 高手的全新工具箱

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

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

  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. 期末项目:模拟真实团队开发