Python 现代开发学习笔记

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
}

笔记正文与全部题解 · Ctrl / ⌘ K