高级 Git 工具:rebase、stash、cherry-pick 和标签
本课程将介绍区分 Git 熟练用户与仅掌握基础知识的用户的进阶工具。我们将探讨 rebase 作为 merge 的替代方案,分析其在哪些情况下能使提交历史更清晰,又在哪些情况下可能导致混乱。课程还涵盖 stash 的快速保存未完成工作的功能,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 ติวเตอร์ และการสัมภาษณ์จะเปิดหลังเข้าสู่ระบบและสมัครสมาชิก
เข้าสู่ระบบหรือลงทะเบียน สมัครสมาชิกเนื้อหาบทเรียน
- 问题:如何暂存未完成的工作
- 保存和查看更改
- 恢复暂存的工作
- 暂存的潜在风险
- 分支合并的工作原理
- Rebase:重写提交历史
- 使用场景:实用指南
- Rebase的风险:可能遇到的问题
- 什么是 rebase 及其用途
- 执行 rebase:逐步解析
- 解决 rebase 冲突
- 交互式 rebase:你的提交历史编辑器
- 交互式 rebase 的主要命令
- 实战:打造完美历史记录
- 注意:修改已发布的提交历史
- 为什么不应该对公共分支进行变基
- 如何从失败的变基中恢复
- 安全地修改提交历史
- 为什么需要Git的cherry-pick功能
- 如何使用git cherry-pick
- 如何选择:cherry-pick vs merge vs rebase
- Git标签:重要提交的标记
- 创建带注释标签和轻量标签
- 将标签发布到远程仓库
- 场景:开发中的热修复
- 通过rebase和cherry-pick集成更改
- 常见错误及避免方法
- 总结:Git 高手的全新工具箱
บทความเกี่ยวกับบทเรียนนี้
- git rebase: ทำงานอย่างไร โหมดโต้ตอบ และการ squash คอมมิต
- คำสั่ง Git: ชีตสรุปพร้อมตัวอย่างสำหรับใช้ทุกวัน
- Git merge กับ rebase: ควรเลือกแบบไหนสำหรับทีมของคุณ
- git stash: พักการเปลี่ยนแปลงชั่วคราวและกู้คืนได้อย่างไร
- คำถาม Git ในการสัมภาษณ์งาน: 25 ข้อพร้อมคำตอบ
บทเรียนทั้งหมดในคอร์สนี้
- 从零开始:成为自信的Git开发者
- 为什么必须掌握Git——不懂Git就找不到工作的原因
- 安装与配置:准备首次使用Git
- 第一个仓库:init、add、commit 和索引的魔力
- 版本控制历史解读:log、diff、show 与历史记录导航
- Git分支:代码的平行宇宙
- 撤销操作详解:restore、reset、revert的正确使用与风险
- GitHub与远程仓库:将代码存入云端
- 团队协作:Fork、功能分支和拉取请求
- 代码合并冲突:不慌张,理解与解决之道
- 真实团队中的Git流程:如何选择适合的工作流
- 高级 Git 工具:rebase、stash、cherry-pick 和标签
- 期末项目:模拟真实团队开发