简述git reset --hard,git reset --soft以及git revert的区别

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'命令在撤销一个提交的同时,会创建一个新的提交。

小结

'git revert'命令撤销一个提交的同时会创建一个新的提交。这是一个相对安全的方法,因为它不会重写提交历史,适合用于公共分支的编辑上。'git reset'命令并不会改变已经提交的历史记录,适合用于私有分支的编辑。

你可能感兴趣的:(简述git reset --hard,git reset --soft以及git revert的区别)