简述git reset --hard,git reset --s
2018-11-23 本文已影响0人
林俊丁
1.测试条件准备
建立本地测试仓库,初始化仓库,添加测试文件并提交
为了测试需要,对测试文件进行三次修改并提交
此时我们使用'git log --oneline'命令,可以看到测试文件已有三个版本记录
2.测试'git reset --hard'命令
为了更加方便理解命令的作用不同,我们还需要了解一个HEAD的概念。HEAD简单来说,指的就是当前当前分支的最近一次提交后的版本,也就是说,HEAD代表的是最新的版本,根据这个概念,我们还可以知道HEAD^ 就是指上一个版本,同理HEAD^^ 就是再上一个版本,我们也可以以HEAD~x来表示距离最新版本的之前几个版本
输入git reset --hard HEAD^
查看文件状态,发现测试文件已经变回上次修改的版本
输入'git log --oneline'命令,发现本地也只剩下两条修改的版本记录
说明'git reset --hard'命令是将文件完全恢复到某个版本状态并销毁提交记录
3.测试'git reset --soft'命令
将测试文件恢复为三次修改状态
输入git reset --soft HEAD^发现并没有提示,此时我们检查一下文件状态
soft命令,仅仅是把我们的第三次的‘commit’操作给撤销了,a.md处于第三次编辑完成、add完成,但未提交的状态简单来看,也就是说--soft命令是撤销指定版本内容的那一次commit,其他的东西都不改变
4.测试'git revert'命令
将测试文件恢复为三次修改状态
输入git revert HEAD^发现系统提示我们存在两个修改版本的测试文件,然后我们查看一下文件状态,发现文件内冲突的内容已经被系统用符号分割开来
说明'git revert'命令在撤销一个提交的同时,会创建一个新的提交。
小结