# Aider undo 回退教程：错误提交识别与恢复后再测

Aider undo 回退教程按本页输入、步骤与检查复现。已真实运行 Python 标准库测试、参考补丁与负例拒绝；未执行 Aider 模型会话。

## 1. 下载并复现基线
把 lesson.zip 解压到独立目录，阅读 before/app.py 和 test_app.py。运行前版测试，保存退出码；本任务目标是：比较分页上界的错误修改与通过版本，识别是否为 Aider 创建的最后提交；回退后验证空集和整页边界。
```sh
cd before
python3 -m unittest -v
```

## 2. 在工具中限定上下文
使用 git log 与 git show 阅读最后提交，并确认提交确实由自己的 Aider 会话创建。满足此条件时才在 Aider 输入 /undo。人工参考包没有 Aider 提交记录，不能在该包里把 Git 恢复截图称为 Aider /undo 实测。

## 3. 提交明确任务书
下载 prompt.txt，核对允许修改的文件后提交给 Aider。参考实现只作为对照，先自己完成任务，不把教材补丁冒充工具生成。
```sh
先核对最后一条 Aider 提交是否将分页改为 total//size+1；若造成空集与整页错误，使用 /undo 回退该 Aider 提交，再重新运行全部分页测试。
```

## 4. 逐文件查看差异
对照 reference.patch 检查逻辑与公开接口。若工具改动测试以绕过错误，先恢复测试；只看“完成”提示不能确认行为正确。
```sh
git diff -- app.py
```

## 5. 运行目标检查
在自己的修改目录运行同一测试，不用 fixed 的通过结果代替你的结果。金额/日期/字段/边界用例都必须执行；运行日志要保存实际退出码。
```sh
python3 -m unittest -v
```

## 6. 核对参考结果与负例
教材 verify.py 会读取 before/fixed 的真实文件并执行 unittest，然后在临时副本中故意破坏代码，确认测试返回非零。已真实运行 Python 标准库测试、参考补丁与负例拒绝；未执行 Aider 模型会话。
```sh
python3 verify.py
```

## 7. 保存练习结果
记录自己的工具版本、实际修改 diff、测试退出码和仍需人工复核的点。init-git.py 只初始化下载包里的 before 目录，不触碰其他仓库；在确认当前练习文件后运行。
```sh
python3 init-git.py
```