• git reset --hard | soft | mixed的区别


    首先,理解git保存文件内容的3个区域概念。

    • 工作区

      工作区,顾名思义就是我们开发的时候就在工作区,当我们对文件有修改、新增的时候。通过git status查看文件状态如下:

        就是文件在工作区发生了更改或者是增加了新的文件。通过git status之后红色文件提示的部分就是新增或发生更改的文件。

    • 暂存区

       这个部分就是执行过git add . 命令之后的文件所处的区域。通过git status查看文件状态如下:

        保存到暂存区的文件,通过git status查看,可以看到提示颜色为绿色。

    • 版本目录

        版本目录这个区块的文件是指通过 git commit 提交过的文件.

    已上可以看到最后一句 noting to commit. 只有在暂存区的文件才可以提交到分支上去。 git commit -m 'test info'; 其中 -m 是指写一个提交日志。

    git log 或者 git reflog可以查看我们的提交记录, 这两个稍有点区别git reflog会把除了commit之外的记录也会显示出来。

    以下是通过git log 之后显示的提交记录。

    可以看到 "test info",是我刚刚的提交日志。commit后面的就是提交的版本id,通过版本id就能滚回对应的版本,

    如果我们需要回滚到"test 2"这一版

    git reset --hard 687582b968a47b46763e9ec1571d0ef8c802fa72

    这时候文件版本回滚到了 "test 2"这版,而在 "test 2"之后的内容都丢弃了(可以找回来)。

    大家可以看到 test3.txt文件和test4.txt文件都已经丢弃了。

    我们把之前的文件找回来 通过git reflog找到对应的提交id

    找到之后然后执行

    git reset --hard 27e752a ; 执行完这个命令之后发现 test3.txt和test4.txt回来了。

    git reset --soft 提交id,还原到暂存区

    重新提交暂存区的内容

    git reset --mixed 提交id, 把文件还原到工作区

    可以看到 --soft是把提交的文件还原到工作区,修改并没有丢失。

  • 相关阅读:
    JQ trigger函数无法触发a标签的两种解决方法
    Normalize.css
    wow.js中各种特效对应的类名
    利用伪元素:after清除浮动
    单词超出隐藏显示省略号(单行或多行)并设置是否将单词打断
    利用伪元素和css3实现鼠标移入下划线向两边展开效果
    css3 兼容各个浏览器
    html 初始化
    将博客搬至CSDN
    Linux配置问题
  • 原文地址:https://www.cnblogs.com/hellolol/p/9812493.html
Copyright © 2020-2023  润新知