你有没有过这样的经历?在终端里改完代码,一通操作猛如虎,回头一看,关键文件被删了或者改错了。这时候别慌,命令行其实自带“后悔药”,掌握几个关键命令,分分钟把误操作找回来。
git checkout 拯救误改的文件
如果你在项目里用 Git 管理版本,不小心改错了一个配置文件,比如 app.js,想恢复到上次提交的状态,直接用:
git checkout -- app.js
这条命令会把工作区里的修改丢掉,还原成最近一次 commit 的样子。就像你写文档时点了“恢复上一版本”,特别适合手滑删代码的场景。
用 git reset 回退未提交的改动
有时候你改了一堆文件,还执行了 git add .,但突然发现方向错了。这时候可以用:
git reset HEAD~1
它能把你最后一次提交也撤回来,所有改动回到暂存区或工作区。如果只是想取消 add,保留修改,就用:
git reset app.js
这样文件的修改还在,但不再准备提交。
rm 之后还能找回吗?回收站来帮忙
Linux 和 macOS 默认的 rm 是真删除,不像图形界面扔进回收站。但你可以提前设个“保险”——用 trash-cli 工具替代 rm。
先安装:
npm install -g trash-cli
以后删文件就用:
trash important-file.txt
删掉的文件会进系统回收站,万一误删,去图形界面的废纸篓里捞一下就行。
编辑器临时救场:vim 的 undo 功能
你在终端用 vim 改配置,一通删除后发现删多了。别急着退出,vim 本身支持 undo。按下 Esc 进入命令模式,输入:
u
就能一步步撤销刚才的操作。多按几次,慢慢回退,比重写快多了。
历史命令也能“撤销”?用 ! 来重跑
有时候你不是要撤销,而是想快速执行上一条命令的反向操作。比如你刚把文件复制到了错误目录:
cp config.prod /etc/app/
想删掉它,可以结合历史命令:
!!:s/cp/rm/
这行的意思是“把上条命令的 cp 替换成 rm”,自动执行 rm config.prod /etc/app/,省得你重新敲一遍。
命令行不是只能前进不能回头。只要工具用得巧,误操作根本不算事。平时多试试这些命令,关键时刻才不会抓瞎。