美文网首页饥人谷技术博客
Git 版本回退命令简述

Git 版本回退命令简述

作者: BitterOutsider | 来源:发表于2018-12-30 22:12 被阅读7次

    一、git reset 的用法

    简单的来说,git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。
    git reset命令 又可以分为git reset --hard xxxgit reset --soft xxx以及git reset --mixed xxx
    为了更好的说明,我们来看一些测试的例子:
    原本abc.md中的内容是:iiiiiiiiii


    现在我们更改它的内容为:hello world

    执行代码git commit -am "change abc.md"
    然后我们用git log查看所有的历史版本:

    好了,我们准备把它还原到上一个版本。
    执行命令git reset --hard HEAD^回退版本和命令cat abc.md输出内容。
    (HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭)
    显然,已经回到了上一个版本。再一次执行git log

    发现最新的一个版本change abc.md已经不见了。
    怎么复原最新的版本呢?我们可以使用命令git reflog,该命令用来记录你的每一次命令。

    然后可以记录版本的commit id,回到最新的版本。
    如:git reset --hard 3a169ff。此时我们再输出abc.md有:

    然后我们再来看看git reset --soft xxx,该命令将最近一次提交节点的提交记录回退到暂存区。
    举个例子:将abc.md中的数据改成Hello Github。然后commit

    突然发现我们将git commit -am "change world to github"写成了git commit -am "cange world to github"。所以我们要将本次提交回退到暂存区,再重新把comment补全,进行一次提交。现在执行git reset --soft head^,就可以重新commit了。

    此时的git log为:

    我们顺利的更改了错误。
    git reset --mixed xxx是将最近一次提交节点的提交记录回退到工作区,比如文件多提交了,或者有一个文件漏添加到暂存区而没有在此次提交时使用,这里不多举例子了。

    二、git revert 的用法

    git revert 的作用是通过创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本,而不是目标版本。
    如果我们想恢复之前的某一版本(该版本不是merge类型),但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
    我们使用git revert HEAD命令就可以创建一个新的版本,此版本与上一个版本相同。


    此时cat abc.md就可以发现输出回到了hello world

    以下是 git renert 的三种用法
    • git revert HEAD :撤销前一次 commit
    • git revert HEAD^ :撤销前前一次 commit
    • git revert commit + (commit id): 撤销指定的版本,撤销也会作为一次提交进行保存。

    三、总结

    • git reset --soft HEAD^:将最近一次提交节点的提交记录回退到暂存区
    • git reset --mixed HEAD^:将最近一次提交节点的提交记录回退到工作区
    • git reset --hard HEAD^:将最近一次提交节点的提交记录全部清除
    • git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
    Git三大分区

    参考文章

    Git Reset命令
    廖雪峰Git教程

    相关文章

      网友评论

        本文标题:Git 版本回退命令简述

        本文链接:https://www.haomeiwen.com/subject/wlyvlqtx.html