基本概念
git仓库可分为3个部分组成:工作目录、 缓存区、 提交历史
git reset
在提交层面上,reset 将一个分支的末端指向另一个提交。
实例
-
新建一个文件夹aa,创建a.md,输入hello,初始化为git仓库,依次执行添加并提交。
-
修改a.md(改为为hello world),添加并提交
-
再次修改a.md(改为hello world zdy),添加并提交
-
查看版本,发现有3个提交历史。
-
执行 git reset 命令,例如 :git reset HEAD~1(返回到上次提交历史) 查看状态,暂存区发生改变,查看提交历史发现最近一次提交已移除。而工作区内容没有变化。
-
git reset -soft
– 缓存区和工作目录都不会被改变
git reset -mixed
–即默认状态下的git reset, 缓存区和你指定的提交同步,但工作目录不受影响
git reset -hard
– 缓存区和工作目录都同步到你指定的提交
git revert
首先撤销某一个commit提交,同时生成一个新的commit,从而不破坏历史版本
Revert 撤销一个提交的同时会创建一个新的提交。
实例
仍然以上例中文件演示,
1.报错,此时打开a.md,修改
-
查看状态
3.执行新增了一个提交历史,而原来那个提交历史仍然存在。
二者区别
- git revert会产生新的提交,并不会真正删除history。git reset 则会删除history。
- git revert 只是改变提交层面,而不涉及文件层面的操作