清理时间线
任务
挑战(Challenge)仓库已在 ~/project/time-travel-git
中设置好。运行以下命令以查看初始提交历史:
cd ~/project/time-travel-git
git log --oneline
你应该看到以下 4 个提交(你的提交哈希值会不同):
886c6ad (HEAD -> master) Add project description
3a87b84 Add project codename
6b4cbb9 Fix typo in project name
0d71e5e Start secret project
你的任务包括以下几项:
- 将最旧的两个提交("Start secret project" 和 "Fix typo in project name")合并为一个提交,消息为 "Initialize secret project"。
- 将 "Add project codename" 提交的信息修改为 "Add project codename: Chronos"。
- 保持最新的提交("Add project description")不变。
要求
要成功完成此任务,请遵守以下要求:
- 所有操作必须在
~/project/time-travel-git
目录中执行。
- 你必须使用
git rebase -i
(交互式变基)命令来清理提交历史。
- 你的最终历史记录应恰好有 3 个提交(而不是原来的 4 个)。
- 文件的内容应保持不变——你只需修改提交历史。
- 当挑战(Challenge)完成时,运行
git log --oneline
应该显示 3 个具有正确消息的提交。
提示
以下是一些有用的提示,可指导你完成挑战(Challenge):
-
交互式变基允许你操作历史记录中的提交。基本命令格式为:
git rebase -i <commit>
其中 <commit>
是你要修改的第一个提交之前的提交。要从第一个提交开始修改,你可以使用:
git rebase -i --root
-
在交互式变基屏幕中,你将看到一个带有操作的提交列表。常见的操作是:
pick
- 按原样使用提交
reword
或 r
- 使用提交但更改其消息
squash
或 s
- 将此提交与前一个提交合并
fixup
或 f
- 类似于 squash,但放弃此提交的消息
-
要合并提交,你可能需要在第二个提交上使用 squash
或 fixup
。
-
要更改提交消息,请使用 reword
操作。
-
设置好你的变基计划后,保存并关闭编辑器。Git 将指导你完成其余过程,根据需要打开新的编辑器窗口以编辑提交消息。
-
如果你在变基过程中犯了错误,你可以随时使用以下命令中止它:
git rebase --abort
然后重新开始。
示例
完成挑战(Challenge)后,你的 git log --oneline
应该类似于这样(具有不同的提交哈希值):
abc1234 Add project description
def5678 Add project codename: Chronos
ghi9101 Initialize secret project