美文网首页
63.Git Reset 详解版本回滚的三种模式

63.Git Reset 详解版本回滚的三种模式

作者: TensorFlow开发者 | 来源:发表于2020-07-23 15:34 被阅读0次

git reset

意思就是可以让HEAD这个指针指向其他版本。说白了就是通过此命令在版本之间进行穿梭。
它有三种模式,soft,mixed,hard,具体的使用方法下面这张图,展示的很全面了。

git各个区域和命令关系

这三个模式理解了,对于使用这个命令很有帮助。在理解这三个模式之前,需要略微知道一点Git的基本流程。正如上图,Git会有三个区域:

Working Tree 当前的工作区域
Index/Stage 暂存区域,和git stash命令暂存的地方不一样。使用git add xx,就可以将xx添加近Stage里面
Repository 提交的历史,即使用git commit提交后的结果

1. git reset --hard

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,以此类推,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

--hard 会在重置 HEAD 和branch的同时,重置缓存区和工作目录里的内容。当你在 reset 后面加了--hard 参数时,你的缓存区和工作目录里的内容会被完全重置为和HEAD的新位置相同的内容。换句话说,就是你的没有commit的修改会被全部擦掉。

回退到上一版本:

git reset --hard HEAD^

回退到指定版本号(以1a2b3c为例)的版本:

git reset --hard 1a2b3c

reset --hard:重置stage区和工作目录:

2. git reset --soft

--soft 则会保留工作目录的内容,并把因为重置 HEAD 所带来的新的文件差异放进暂存区。

什么是「重置 HEAD 所带来的新的差异」?就是这里:

--soft所带来的新的差异

由于 HEAD 从 4 移动到了 3,而且在 reset 的过程中工作目录和暂存区的内容没有被清理掉,所以 4 中的改动在 reset 后就也成了工作目录新增的「工作目录和 HEAD 的差异」。这就是上面一段中所说的「重置 HEAD 所带来的差异」。

这就是--soft 和 --hard 的区别:--hard 会清空工作目录和暂存区的改动,*而 --soft则会保留工作目录的内容,并把因为保留工作目录内容所带来的新的文件差异放进暂存区。

3.git reset 不带参数或带--mixed

git reset 如果不加参数,那么默认使用 --mixed 参数。此时表示要:保留工作目录,并清空暂存区。也就是说,工作目录的修改、暂存区的内容以及由 reset 所导致的新的文件差异,都会被放进工作目录。简而言之,就是「把所有差异都混合(mixed)放在工作目录中」。

总结

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,以此类推,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

回退到上一版本:

git reset --hard HEAD^

回退到指定版本号(以1a2b3c为例)的版本:

git reset --hard 1a2b3c

--hard 会清空工作目录和暂存区的改动,
--soft则会保留工作目录的内容,并把因为保留工作目录内容所带来的新的文件差异放进暂存区。
--mixed 参数。git reset 如果不加参数,那么默认使用 --mixed 参数。此时表示要:保留工作目录,并清空暂存区。

特别提示

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令
git reset --hard commit_id

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

相关文章

  • 63.Git Reset 详解版本回滚的三种模式

    git reset 意思就是可以让HEAD这个指针指向其他版本。说白了就是通过此命令在版本之间进行穿梭。它有三种模...

  • git回退一个版本的方法

    有时候错误地进行了一次提交,想回滚代码时,用到的命令是git reset,这个命令有三种模式: git reset...

  • git revert 与 git reset

    Git版本回滚之 git revert 与 git reset 在使用 git 的时候,如果错误push之后,经常...

  • git使用总结

    git reset 版本回退的三种用法总结 git reset (--mixed) HEAD~1回退一个版本,且会...

  • git

    1.版本回退 git reset HEAD^ 回退到上一版本,修改会放到工作区 git reset --soft ...

  • 【学了就忘】Git后悔药 — 32.版本回退操作(一)

    git reset命令可以实现Git版本回退,其有三个选项,可以完成三种不同效果的回退。 (1)git reset...

  • 远程仓库版本回退方法

    远程分支回滚的三种方法: 一、自己的分支回滚直接用reset 二、公共分支回滚用revert 三、错的太远直接将代...

  • Git常用命令

    版本回退git reset 回退add 操作Git 版本恢复还原命令 reset git reset –mixed...

  • 【Git】reset与revert

    参考文章 【Git】reset实例详解 git revert 详解

  • GIT常用操作

    1.版本回退 git reset--hard HEAD^ / git reset--hard commit_id ...

网友评论

      本文标题:63.Git Reset 详解版本回滚的三种模式

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