• 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

    参考资料

  • 相关阅读:
    Excel 数据透视表教程大全之 08 创建计算字段,将销售额除以数量实现计算每种产品单价(教程含数据)
    String、StringBuffer、StringBuilder 适合的应用场景
    vue实现文件上传压缩优化处理
    重启tomcat-Tomcat服务器怎么重启?
    【算法】迷宫问题
    做区块链卡牌游戏有什么好处?
    Python实现定时任务的八种方式
    11、vector容器
    prompt learning受控文本生成作诗
    jupyter_快速开始
  • 原文地址:https://blog.csdn.net/qq_36327346/article/details/134564852