• git reset 、git revert和git rebase 区别


     git revert 用法

    git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
    作为一次最新的提交
        * git revert HEAD                  撤销前一次 commit
        * git revert HEAD^               撤销前前一次 commit
        * git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
    git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
    版本会递增,不影响之前提交的内容

    git reset 用法

    git reset 主要用于重置代码,使工作区回到过去的某个状态,主要有3种用法:

    使用参数 --hard,如 git reset --hard < commit ID >
    直接把 HEAD 指针移动到 commit ID 上,无论修改是否被 add 、 commit ,都直接重置(此时暂存区被清空,工作区的修改被清空),所做的修改将全部丢失,这是非常危险的。但是如果你修改之后进行了 commit 操作,那非常好办,可以用 reflog 查询相应的 hash 值,进行恢复;如果你修改之后,进行了 add 操作,也可以恢复,但是比较麻烦,用 git fsck --lost-found ,参考此博客;如果你修改之后既没有进行 commit 操作也没有进行 add 操作,暂时不知道恢复方法。
    使用参数 --soft,如 git reset --soft < commit ID >
    使用该参数是安全的,它是把 HEAD 指针移动到 commit ID 上,暂存区和工作区不变。
    使用参数–mixed或者不使用参数(默认为–mixed),如 git reset < commit >
    使用该参数是安全的,它是把 HEAD 指针移动到 commit ID 上,暂存区被清空,工作区的修改保留。

    git rebase 用法

    git rebase使用技巧 

    https://www.cnblogs.com/ygunoil/p/15466337.html

    区别

    1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。 
    2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。 
    3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。

    可以这样简单记忆:

    git revert 放弃某次提交
    git revert 之前的提交仍会保留在git log中,而此次撤销会做为一次新的提交。

    git reset 是回滚到某次提交
    git reset --soft
    此次提交之后的修改会被退回到暂存区
    git reset --hard
    此次提交之后的修改不做任何保留,git status干净的工作区。

    git rebase 当两个分支不在一条直线上,需要执行merge操作时,使用该命令操作。
    该命令执行时极有可能显示merge失败

  • 相关阅读:
    API之绘图(转)
    API之子窗口创建 (转)
    函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)(二)
    _cdecl 和_stdcall及其他调用方式 (一)
    sizeof的深入理解
    VC++中2进制,10进制,16进制相互转换
    传说中的数据结构
    字符串扩展
    数据结构实验之链表七:单链表中重复元素的删除
    数据结构实验之栈一:进制转换
  • 原文地址:https://www.cnblogs.com/ygunoil/p/15464842.html
Copyright © 2020-2023  润新知