07-04 本地恢复实验
题目
在专门的练习分支中执行一次 soft reset,用 reflog 找到原提交并建立救援分支;比较救援分支、当前暂存区与工作目录。
推导与做法
soft reset 把 HEAD 从第二次提交退到第一次,索引和工作目录仍保留第二次的 two。reflog 中 HEAD@{1} 指向刚离开的提交。
在这个提交上建立 codex/rescue,确认救援分支仍包含第二次快照;当前分支则保留一次已暂存的 one→two。实验在全新临时仓库执行,完成后清理,不操作已有项目。
过程图
%% 每个节点保留输入、执行位置或执行后的实际状态。
flowchart TD
S0["HEAD第二次:two"]
S1["soft reset:HEAD回one,索引仍two"]
S0 --> S1
S2["reflog 找到原第二次提交"]
S1 --> S2
S3["建立 rescue 指向two;工作文件仍two"]
S2 --> S3
classDef default fill:#EEF0FB,stroke:#4657B5,color:#24324A
linkStyle default stroke:#4657B5
实现与运行
查看带注释实现。本题与相关处理函数放在同一章节代码文件中;启动工具负责定位相邻项目和选择题号。
在 学习索引/参考实现/代码 中运行。
# 使用项目解释器运行本题,题号决定执行哪一组演示。
python "ch07.py" 07-04
程序按题号输出处理后的值、查询结果或状态。先和前面的手算比较,再修改一项输入重跑。
查看本题运行结果
# 与上面的手算状态和题目数值逐项比较。
{
"head_is_first": true,
"rescue_is_second": true,
"staged": "diff --git a/README.md b/README.md\nindex 5626abf..f719efd 100644\n--- a/README.md\n+++ b/README.md\n@@ -1 +1 @@\n-one\n+two\n",
"working": "two\n"
}