• Git版本回退与撤销修改


    参考了廖雪峰Git教程:

    版本回退 https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192

    撤销修改 https://www.liaoxuefeng.com/wiki/896043488029600/897889638509536


    版本回退

      HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

    回退到上一个commit:

    git reset --hard HEAD^

           直接指定commit id也是可以的。

           拓展:reset的三种模式

    reset三种模式区别和使用场景

    区别:

    1. --hard:重置位置的同时,直接将 working Tree工作目录index 暂存区repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。

    2. --soft:重置位置的同时,保留working Tree工作目录index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。

    3. --mixed(默认):重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。

    作者:carway
    链接:https://www.jianshu.com/p/c2ec5f06cf1a
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    重新回到最新版本:

    git reset --hard 最新版本commit id

          如果忘记了新版本commit id,可以通过

     git reflog

          查看。


    撤销修改

    撤销工作区修改

    git checkout -- file

          命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

    撤销暂存区修改

          git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

         git reset HEAD <file>


     小结

    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

  • 相关阅读:
    第三周课程总结&实验报告
    2019春学习总结
    第十二周
    第十一周
    第十周
    第九周
    第八周作业
    第七周作业
    实验报告3&学习总结
    实验报告2
  • 原文地址:https://www.cnblogs.com/144823836yj/p/12937360.html
Copyright © 2020-2023  润新知