git 管理我们的项目,会记录我们每一个时期发生的更改,每次 push 在日志当中的都会生成一个新的版本,通过 git reset 命令我们可以回到日志当中的任何一个时期的版本
reset 执行之后会修改本地库的版本,不同的参数会对其他两个区域发生不同的影响
- git reset --hard
hard 参数会舍弃所有的未合入远端的更改,并且不保留撤销回来的版本与当前版本之间所发生的更改
在上图中我们可以看到,在执行 git reset --hard 之前我们在工作区、暂存区、本地库都有相应的更改,这些更改都是在本地发生的,没有合入远端代码库,在执行之后本地状态非常干净,不管是工作区、暂存区还是本地库的更改都被抛弃,这些更改不能通过日志中的版本撤回,在编辑器进行重启之前,可以通过 Ctrl + z 进行撤销 - git reset --mixed
mixed 保留撤销回来的版本与当前版本之间所发生的更改,并且将这些更改放入工作区
在 reset 之前我们看一下状态(git status),工作区、暂存区和本地库都有更改,在 --mixed 之后我们看到,所有的更改全部回退到了工作区 - git reset --soft
soft 也保留撤销回来的版本与当前版本之间所发生的更改,而 soft 是将所有经过 commit 操作的更改回退到本地库
在 reset 之前我们看一下状态(git status),工作区、暂存区和本地库都有更改,在 --soft 之后我们看到,只有暂存区发生了更改,并且将所有经过 commit 操作的更改回退到暂存区,而工作区的更改没有受到影响