三条命令的作用都是撤销,但工作的方式不同。
git rest --hard xxx:
- 为了方便观察,我新建文件后进行了三次改动。
-
当前工作目录中的数据和q3是一致的。
- 可以看出版本退回到了q2。
git reset --soft xxx:
- soft命令会让版本回到某次commit后的状态,但并不改动工作目录中的文件。执行git reset --soft后
- 可以看出版本退回了q1,但之前提交的文件变成了有新改动的状态。
git revert xxx:
为了便于观察,对新建文件重新进行了两次改动
- 可以看出git revert 的撤销行为本身也会被作为一次commit 保存在log中。