📖 知识点回顾
git log --oneline:查看提交历史,找到版本 IDgit checkout -- 文件/git restore 文件:恢复误删文件git reset --hard ID:回退到某个版本git clone:从远程 / 备份仓库克隆,找回完整代码git reflog:查看操作历史,找回被 reset 弄丢的提交
💡 救援套路(按轻重从浅到深)① 恢复误删文件(checkout)→ ② 回退坏版本(reset)→ ③ 从克隆备份找回(clone)→ ④ 用 reflog 找回丢失提交
⚔️ 剧情 Kata 实战任务
任务需求:
模拟 "小张的命案现场":建一个
订单模块.py并提交(整晚心血)模拟误删 + reset:
rm删文件,再git reset --hard折腾一下用
git checkout -- 订单模块.py找回误删的文件(招式①)如果 checkout 不行,用
git clone从备份仓库克隆一份完整代码(招式③)汇总:写出 "代码丢了" 的完整救援步骤
参考代码(在终端依次敲)
# 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: 增加评价功能,新增支付模块
...
💡 救援总结:
招式①
git checkout -- 订单模块.py→ 从版本库恢复误删文件,内容完好招式③
git clone ~/外卖App 外卖App备份→ 从备份仓库克隆,完整历史全在小张的整晚心血保住了。Git 三件套,专治各种 "代码命案"。
🧠 思考题
恢复误删文件首选哪招?
git checkout -- 文件名恢复的是什么 "状态" 的文件?(提示:最近一次提交)为什么平时 "定期提交 + 有远程 / 备份仓库" 特别重要?小张这次能获救,靠的是什么前提?
行者孙Python