Đoạn xem trước bài giảng

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

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

git rebase git stash git cherry-pick
Bạn sẽ học gì trong bài giảng này
  • 掌握使用 git stash 在不同任务间切换而不丢失修改的能力。
  • 理解 rebase 和 merge 的区别,并能根据具体场景做出明智选择。
  • 学会使用交互式 rebase 编辑提交历史,并掌握使用标签标记发布版本的技巧。

Phần đầu bài giảng

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

  • 突发 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}

Bài giảng đầy đủ dành cho thuê bao

Còn 25 slide nữa trong phiên bản đầy đủ.

Video, toàn bộ slide, ghi chú, bài kiểm tra, gia sư AI và phỏng vấn sẽ mở sau khi đăng nhập và đăng ký thuê bao.

Đăng nhập hoặc đăng ký Đăng ký thuê bao

Nội dung bài giảng

  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 高手的全新工具箱

Bài viết liên quan đến bài học này

Tất cả bài giảng của khóa học

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