• GIT实践与常用命令---回退


    实践场景

    场景1 回退提交

    在日常工作中,我们可能会和多个同事在同一个分支进行开发,有时候我们可能会出现一些错误提交,这些错误提交如果想撤销,可以有两种解决办法:回退( reset )、反做(revert)
    keywords:reset、revert、reflog

    回退 git reset

    reset 操作就是修改 HEAD 指向的位置,将 HEAD 当前指向的位置回退到指定的某个版本,例如针对某个分支我们提交了三次(如图所示),这是 reset 之前的三个 commit 记录,目前 HEAD 指向的是 commit 3的位置,如果我们想把代码回退到 commit 1的位置,怎么操作呢?

    git reset --hard  'commit 1 的提交id'
    
    • 1


    操作完之后 commit 2和 commit 3 的提交记录就没有了,直接回退到了commit 1。注意区分两个参数:hard& soft

    • –hard 直接回退
    • –soft 软回退

    soft只回退了commit 的信息,但是内容不会消失,工作区的文件内容都还在。如果还要提交,直接 commit 即可。这种操作的友好性就是如果我们本身只是想把commit的操作给回退,但是不想还原内容,保持所有内容都还在,这种操作就很合适,保证了代码不会丢失。

    重做/反做 git revert

    git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。如下图所示:

    反做前:

    git revert -n  'commit 2 的提交id'
    git commit -m 'test4'
    
    • 1
    • 2

    反做后:

    找回reset和revert的记录 git reflog

    如何找回因回退或反做而消失的commit记录?上述两种操作会造成有些 commit 记录消失,但是如果自己又后悔了,想找回来,我们该怎么操作呢?可以使用reflog查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

    git reflog
    faa135e HEAD@{0}: commit: test3
    783ef0a HEAD@{1}: commit: test2
    2288ba8 HEAD@{2}: commit: test1
    abddace HEAD@{3}: commit: test3
    30df387 HEAD@{4}: commit: test3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参考资料

  • 相关阅读:
    代码没有报错但是运行的时候没反应是怎么回事
    Android PreferenceScreen的使用和详解(设置页面)
    德迅云安全和您聊聊关于DDOS高防ip的一些方面
    竞赛选题 深度学习实现语义分割算法系统 - 机器视觉
    JVM解析之类加载机制
    Es的核心概念
    SpringCloud 远程通信【OpenFeign】
    Python在列表中如何对多个参数进行修改
    ESP8266-Arduino编程实例-RFID-RC522模块驱动
    Clion 2019 搭配 Visual C++ Build Tools 搭建MSVC开发环境
  • 原文地址:https://blog.csdn.net/qq_36327346/article/details/134564852