单机篇-Day12|剧情 Kata:小张熬夜误删整晚代码 → 用 Git 找回 "命案现场"

7 次阅读 2026-10-30 14:11

📖 知识点回顾

  1. git log --oneline:查看提交历史,找到版本 ID

  2. git checkout -- 文件 / git restore 文件:恢复误删文件

  3. git reset --hard ID:回退到某个版本

  4. git clone:从远程 / 备份仓库克隆,找回完整代码

  5. git reflog:查看操作历史,找回被 reset 弄丢的提交

💡 救援套路(按轻重从浅到深)① 恢复误删文件(checkout)→ ② 回退坏版本(reset)→ ③ 从克隆备份找回(clone)→ ④ 用 reflog 找回丢失提交

⚔️ 剧情 Kata 实战任务

任务需求:

  1. 模拟 "小张的命案现场":建一个 订单模块.py 并提交(整晚心血)

  2. 模拟误删 + reset:rm 删文件,再 git reset --hard 折腾一下

  3. 用 git checkout -- 订单模块.py 找回误删的文件(招式①)

  4. 如果 checkout 不行,用 git clone 从备份仓库克隆一份完整代码(招式③)

  5. 汇总:写出 "代码丢了" 的完整救援步骤

参考代码(在终端依次敲)

# 0. 进仓库
cd ~/外卖App

# 1. 模拟小张整晚心血:新建订单模块并提交
echo "def 订单(): return '订单已创建'" > 订单模块.py
git add 订单模块.py
git commit -m "feat: 完成订单模块"

# 2. 模拟"命案":误删文件(小张手抖)
rm 订单模块.py
ls                        # 文件不见了

# 3. 招式①:用时间机器恢复误删文件
git checkout -- 订单模块.py
ls                        # 文件回来了
cat 订单模块.py

# 4. 招式③(兜底):从备份仓库克隆完整代码(模拟远程备份)
cd ~
git clone ~/外卖App 外卖App备份
cd ~/外卖App备份
git log --oneline         # 完整历史都在,血汗保住了

 

运行示例:

user@linux:~/外卖App$ git checkout -- 订单模块.py
user@linux:~/外卖App$ ls
订单模块.py 外卖App.py .gitignore 支付.py    # 文件回来了!
user@linux:~/外卖App$ cat 订单模块.py
def 订单(): return '订单已创建'              # 内容完好

user@linux:~$ git clone ~/外卖App 外卖App备份
Cloning into '外卖App备份'... done.
user@linux:~/外卖App备份$ git log --oneline
a1b2c3d feat: 完成订单模块
9f0a1b2 feat: 增加评价功能,新增支付模块
...

 

💡 救援总结:

  1. 招式① git checkout -- 订单模块.py → 从版本库恢复误删文件,内容完好

  2. 招式③ git clone ~/外卖App 外卖App备份 → 从备份仓库克隆,完整历史全在小张的整晚心血保住了。Git 三件套,专治各种 "代码命案"。

🧠 思考题

  1. 恢复误删文件首选哪招?git checkout -- 文件名 恢复的是什么 "状态" 的文件?(提示:最近一次提交)

  2. 为什么平时 "定期提交 + 有远程 / 备份仓库" 特别重要?小张这次能获救,靠的是什么前提?