git reset 与git revert基础

基本概念

git仓库可分为3个部分组成:工作目录、 缓存区、 提交历史


git reset

在提交层面上,reset 将一个分支的末端指向另一个提交。

实例

  1. 新建一个文件夹aa,创建a.md,输入hello,初始化为git仓库,依次执行添加并提交。


  2. 修改a.md(改为为hello world),添加并提交


  1. 再次修改a.md(改为hello world zdy),添加并提交


  2. 查看版本,发现有3个提交历史。


  3. 执行 git reset 命令,例如 :git reset HEAD~1(返回到上次提交历史) 查看状态,暂存区发生改变,查看提交历史发现最近一次提交已移除。而工作区内容没有变化。


  1. git reset -soft – 缓存区和工作目录都不会被改变
    git reset -mixed –即默认状态下的git reset, 缓存区和你指定的提交同步,但工作目录不受影响
    git reset -hard – 缓存区和工作目录都同步到你指定的提交

git revert

首先撤销某一个commit提交,同时生成一个新的commit,从而不破坏历史版本
Revert 撤销一个提交的同时会创建一个新的提交。

实例

仍然以上例中文件演示,
1.报错,此时打开a.md,修改


  1. 查看状态


3.执行新增了一个提交历史,而原来那个提交历史仍然存在。


二者区别

  1. git revert会产生新的提交,并不会真正删除history。git reset 则会删除history。
  2. git revert 只是改变提交层面,而不涉及文件层面的操作
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。