重写历史

GitGitBeginner
立即练习

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

介绍

欢迎来到 Git 时间旅行探险!你被赋予了一项重要任务:清理一个绝密项目的混乱提交历史。你的目标是运用你新掌握的 Git 技能,特别是交互式变基(interactive rebasing)的艺术,将一个混乱的时间线转变为清晰、简洁的历史记录。

想象你是一位能够改写过去的历史学家。你的工作是整理一系列分散的事件,并将它们重新组织成一个连贯的叙述。这正是你将使用 Git 的交互式变基功能所做的事情。你将合并相关的提交,删除不必要的提交,并重写提交信息,以更清晰地讲述项目开发的故事。

准备好潜入时间流,带着一个经过打磨的 Git 历史记录回归了吗?让我们开始你的时空冒险吧!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/rebase("Reapply Commits") subgraph Lab Skills git/commit -.-> lab-387746{{"重写历史"}} git/log -.-> lab-387746{{"重写历史"}} git/rebase -.-> lab-387746{{"重写历史"}} end

清理时间线

任务

挑战的仓库已经设置好,路径为 ~/project/time-travel-git。运行以下命令查看初始的提交历史:

cd ~/project/time-travel-git
git log --oneline
886c6ad (HEAD -> master) Add project description
3a87b84 Add project codename
6b4cbb9 Fix typo in project name
0d71e5e Start secret project

你的任务包括以下内容:

  1. 将前两个提交合并为一个提交,提交信息为 "Initialize secret project"。
  2. 将 "Add project codename" 提交的信息重写为 "Add project codename: Chronos"。
  3. 保留最后一个提交不变。

要求

为了成功完成这个任务,请遵循以下要求:

  • 所有操作必须在 ~/project/time-travel-git 目录下进行。
  • 使用 rebase 来清理提交历史。
  • 最终的提交历史应恰好包含 3 个提交。
  • 不要修改仓库中的文件内容。

示例

完成挑战后,你的 git log --oneline 应该类似于以下内容:

abc1234 Add project description
def5678 Add project codename: Chronos
ghi9101 Initialize secret project
✨ 查看解决方案并练习

总结

在这个挑战中,你踏上了一段穿越 Git 历史的时空之旅。你掌握了交互式变基(interactive rebasing)的艺术,这是一种强大的工具,允许你重塑过去并创建一个更清晰、更符合逻辑的提交历史。

通过合并提交、重写提交信息以及重新组织更改,你将一系列混乱的事件转变为连贯的叙述。这项技能在实际项目中非常宝贵,因为维护一个干净且易于理解的历史记录可以极大地改善协作和项目管理。

请记住,能力越大,责任越大。虽然重写历史对于本地分支或个人项目非常有用,但在共享分支上应谨慎使用。在修改共享历史之前,务必与你的团队沟通。

在你继续 Git 的冒险之旅时,请不断磨练这些技能。操纵历史的能力不仅仅是整理——它关乎于为你项目的演变打造一个清晰的故事。愿你的未来 Git 历史干净整洁,合并无冲突,提交始终有意义!