07-02 暂存与文件恢复
题目
让 README 同时出现在暂存和未暂存列表中,分别解释两份 diff;取消暂存后,确认工作目录中的编辑仍在。
推导与做法
第一次修改 one→two 后暂存,第二次把工作文件改成 three。此时 –cached 比较 HEAD 与索引,看到 one→two;普通 diff 比较索引与工作目录,看到 two→three。
restore –staged 只把索引恢复到 HEAD,工作目录仍是 three。再查看两份 diff,暂存差异为空,未暂存差异变成 one→three。
过程图
%% 每个节点保留输入、执行位置或执行后的实际状态。
flowchart TD
S0["HEAD=one;工作文件改two"]
S1["暂存:索引two;HEAD仍one"]
S0 --> S1
S2["再编辑:工作three;索引仍two"]
S1 --> S2
S3["取消暂存:索引one;工作仍three"]
S2 --> S3
classDef default fill:#EEF0FB,stroke:#4657B5,color:#24324A
linkStyle default stroke:#4657B5
实现与运行
查看带注释实现。本题与相关处理函数放在同一章节代码文件中;启动工具负责定位相邻项目和选择题号。
在 学习索引/参考实现/代码 中运行。
# 使用项目解释器运行本题,题号决定执行哪一组演示。
python "ch07.py" 07-02
程序按题号输出处理后的值、查询结果或状态。先和前面的手算比较,再修改一项输入重跑。
查看本题运行结果
# 与上面的手算状态和题目数值逐项比较。
{
"staged_diff": "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_diff": "diff --git a/README.md b/README.md\nindex f719efd..2bdf67a 100644\n--- a/README.md\n+++ b/README.md\n@@ -1 +1 @@\n-two\n+three\n",
"after_unstage": "three\n",
"index_diff_empty": true
}