如何在git中撤销未提交的本地修改?
那具体该怎么操作呢?有没有既简单又高效的办法,能让我们快速恢复到修改前的状态呢?
作为历史上今天的读者,我在日常处理代码时,经常会遇到不小心改乱了文件又没提交的情况,这时候要是能快速撤销,能省不少事。其实git早就为我们准备了多种方案,关键是要分清自己的修改处于哪种状态。
这种情况最常见,就是你改了文件,但还没把修改加入暂存区(没跑git add)。
git checkout -- 文件名
git checkout -- index.html
,文件就会回到最近一次提交或未修改的状态。--
不能少,它能避免文件名和分支名冲突,这是很多新手容易忽略的点。要是你已经用git add把修改加入了暂存区,但还没commit,这时候步骤就得再多一步。
| 步骤 | 操作命令 | 作用 |
| ---- | ---- | ---- |
| 1 | git reset HEAD 文件名
| 把暂存区的修改撤回到工作区 |
| 2 | git checkout -- 文件名
| 丢弃工作区的修改 |
如果同时改了好几个文件,一个个处理太费时间,这时候可以用批量操作。
git checkout .
(注意末尾的点,代表当前目录下所有文件)git reset HEAD .
取消所有暂存,再git checkout .
丢弃工作区修改git status
看看当前状态再动手。有时候不是要全部撤销,而是想删改其中一部分,这时候直接手动编辑文件就行。
其实版本控制工具的魅力就在于此,就像我们在工作中写错了报告可以修改一样,git让代码修改有了“后悔药”。根据我接触到的不少开发者反馈,熟练掌握这些撤销技巧,能减少至少40%的重复劳动时间。毕竟在快节奏的开发环境里,高效处理错误比反复返工更重要。