时间旅行的开发者

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

想象一下,你是一名正在开发时间机器项目的开发者。突然,未来的你出现了,并警告你当前代码库中存在一个严重的 bug!你需要快速保存正在进行的工作,修复这个 bug,然后继续当前的任务。这个挑战将在一个高风险、时间扭曲的场景中测试你的 Git stash 技能!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/DataManagementGroup -.-> git/stash("Save Changes Temporarily") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") subgraph Lab Skills git/stash -.-> lab-387759{{"时间旅行的开发者"}} git/branch -.-> lab-387759{{"时间旅行的开发者"}} git/checkout -.-> lab-387759{{"时间旅行的开发者"}} end

储藏、修复和恢复

初始状态

你位于 ~/project 目录中。 time-machine 目录是一个新的 Git 仓库,包含以下文件:

  • main-console.txt (内容:"Bug: Temporal Flux Unstable")
  • flux-capacitor.txt (内容:"Work in progress")
  • new-feature.txt (内容:"Untracked feature")

你可以使用 git status 命令来检查仓库的当前状态。

任务

  1. 储藏(Stash)你当前的更改,包括任何未跟踪的文件。
  2. 通过将 main-console.txt 的内容更新为 "Fixed: Temporal Flux Stabilized",修复 master 分支中的「严重错误」。
  3. 从你储藏的更改创建一个名为 future-upgrades 的新分支。
  4. 确保 master 分支中的错误修复也存在于 future-upgrades 分支中。

要求

  • 所有操作都必须在 ~/project/time-machine 目录中执行。
  • 确保你的原始更改(包括已跟踪和未跟踪的)都存在于新分支中。
  • main-console.txt 中的错误修复必须存在于 masterfuture-upgrades 分支中。

示例

完成挑战(Challenge)后,你的仓库应该如下所示:

master 分支上:

main-console.txt (content: "Fixed: Temporal Flux Stabilized")

future-upgrades 分支上:

main-console.txt (content: "Fixed: Temporal Flux Stabilized")  ## 包含来自 master 的错误修复
flux-capacitor.txt (content: "Work in progress")              ## 原始已跟踪的更改
new-feature.txt (content: "Untracked feature")                ## 原始未跟踪的文件

注意:为了达到这种状态,你需要确保两个分支都包含错误修复,同时保留你在 future-upgrades 分支中的进行中的工作。

✨ 查看解决方案并练习

总结

在这个挑战中,你在一个模拟的紧急场景中练习了使用 Git stash。你学会了如何快速保存正在进行的工作(包括未跟踪的文件),切换上下文以修复关键问题,然后从暂存的更改中创建一个新分支。这些技能对于在意外任务出现时保持工作流程的顺畅至关重要,使你能在不丢失工作或打断专注的情况下同时处理多项任务。

请记住,虽然 Git stash 是一个强大的工具,用于临时存储更改,但它最适合用于短期存储。对于长期工作或重要功能,创建专用分支通常是更好的方法。继续练习这些技能,你将能够轻松应对任何时间扭曲的开发场景!