git --reset 与 git --revert的作用与区别

Git 分为三部分:

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

如下图所示为以下三者的关系:


Git工作流程

HEAD

HEAD 是当前分支引用的指针,它总是指向该分支上的最后一次提交。 这表示 HEAD 将是下一次提交的父结点。 通常,理解 HEAD 的最简方式,就是将它看做 你的上一次提交 的快照。

Git --reset 与 Git --revert 的作用

  1. 文件从暂存区回退到工作区
  2. 版本回退

假设我们修改了本地工作目录的某个文件,然后使用 git add命令提交到缓存区,并使用commit提交到HEAD中,这时我们发现修改错了,想要回退版本,就要使用的Git reset命令。

Git --reset soft XXX

该命令不改变工作区和缓存区,只移动 HEAD 到指定 commit。如下图所示:


改变前,等待push

使用reset命令后,index.html等待commit

HEAD~ :HEAD的父节点

Git --reset mixed XXX

该命令只改变缓存区,不改变工作区。这是默认参数,通常用于撤销git add,相当于回滚到所有 git add 和 git commit 的命令执行之前。

Git --reset hard XXX

该命令改变工作区和暂存区到指定 commit。该参数等同于重置,可能会引起数据损失。执行该命令相当于撤销了最后的提交、git add 和 git commit 命令以及工作目录中的所有工作。如下图所示:


hard命令

Git --revert XXX

git revert命令用于撤销commit,用一次新的commit来回滚之前的commit。

git revert
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容