美文网首页饥人谷技术博客工具
git --reset 与 git --revert的作用与区别

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

作者: 孙炎_ | 来源:发表于2018-12-22 13:36 被阅读68次

    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

    相关文章

      网友评论

        本文标题:git --reset 与 git --revert的作用与区别

        本文链接:https://www.haomeiwen.com/subject/kifikqtx.html