同学同学,你是否经历过以下绝望瞬间?
- 手滑删了写了一天的代码
- 提交了包含“老板看了会沉默”的调试日志
- 把测试分支代码合并到生产环境
不着急不着急,Git的“时光机”功能,专治各种手残和脑抽的
今天我们就来学习《Pro Git》中的终极保命技能——回退与撤销
1. 工作区翻车:代码改崩了?一键还原!
场景:你疯狂码了200行代码,结果跑起来全是BUG,比蜘蛛网还乱。
救命指令:
git checkout -- 文件名
效果:将文件恢复到最近一次"git commit"或"git add"时的状态。
2. 暂存区翻车:不小心"git add"了不该提交的文件
场景:你本想提交代码,结果把“老板压榨十大罪行”文件夹也"git add ."了。 (那太有生活了)
救命指令:
git reset HEAD 文件名 # 把文件踢出暂存区
git checkout -- 文件名 # 再一键还原文件内容
效果:文件从暂存区退回工作区,并恢复原状。
3. 提交翻车:错误代码已经commit了!
情况1:想撤回最后一次提交
救命指令:
git reset --soft HEAD~1 # 撤回提交但保留修改(优雅版)
git reset --hard HEAD~1 # 撤回提交并删除修改(狂暴版)
"--soft":像偷偷擦掉黑板上的字,老师以为你从没写过。
"--hard":直接抡起板擦砸穿黑板:“这代码根本不存在!”
情况2:想撤回某次历史提交
场景:三天前的某个提交引入了致命BUG,但后面又提交了新功能。
救命指令:
git revert 提交的哈希值
效果:生成一个“反向提交”,抵消之前的修改,保留后续提交。
4. 究极翻车:代码已推送到远程仓库!
场景:你"git push"了包含银行卡密码的配置文件,同事已经在围观。
救命指令:
1. 本地先用"git reset"回退到正确版本
2. 强制推送到远程:
git push --force
5. 高级技巧:Git的后悔药仓库
不想用命令?试试这些操作:
"git reflog":查看所有操作记录,连撤回的提交都能找到!
"git stash":临时保存未提交的代码,切换分支不丢数据!
总结:Git撤回的奥义
记住三条保命法则:
- 勤提交(多commit,小步快跑)
- 写备注(message写清楚,方便定位问题)
- 慎用force(团队协作时,revert比reset更安全)
Git祖师爷名言:
“撤销不是懦弱,而是战略撤退!
——某个被"rm -rf"删库后连夜跑路的程序员
明天咱们将学习:
《Pro Git》 2.5基础-远程仓库的使用
关注主播,让完蛋成为习惯~