说明
有时候,我们用Git的时候有可能commit提交代码后,发现这一次commit的内容是有错误的,那么有两种处理方法:
- 修改错误内容,再次commit一次
- 使用
git reset命令撤销这一次错误的commit
第一种方法简单,但会多次一次commit记录。
第二种方法更好,错误的commit没必要保留下来
注意:该命令是操作本地库,无法对远程库进行操作
应用场景
该命令是操作本地库,无法对远程库进行操作,所以适合 还没有提交到远程库 的情况
如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
不适合情况
- 提交到远程库后,不适合使用本命令
- 有些公司要求不准使用本命了
提交到远程库后,不适合使用本命令的 例子:
本地库版本记录:A -> B -> C -> D
远程库版本记录:A -> B -> C -> D
执行命令后,本地库删除上一次提交,如下:
A -> B -> C
但远程库没变,所以会造成本地库与远程库不一致的情况
如果用 git push 推送会报错,因为本地库 HEAD 指向的版本比远程库的要旧
要 强制推送:
git push -f
git原理
详见:git教程-git reset 恢复到上一个版本、恢复到指定版本
操作
按照下图操作:
弹出窗口,如下:
点击【确定】后,暂存区、版本库就恢复到该版本了
使用模式
使用模式分以上三种,对应 git set 的三个参数:soft、mixed、hard,对应解释:
| 使用模式 | git参数 | 工作目录 | 暂存区(index) | 版本库(head) |
|---|---|---|---|---|
| 软合并 | --soft |
不变 | 不变 | 恢复指定版本 |
| 混合合并 | --mixed 或不写 |
不变 | 恢复指定版本 | 恢复指定版本 |
| 强行合并 | --hard |
恢复指定版本 | 恢复指定版本 | 恢复指定版本 |
注意: --hard 慎用,工作区的代码也会恢复


