关于git的reset指令说明-soft、mixed、hard

    在开发过程中,git的版本管理越来越普及。在版本管理中,最常用和最重要的是重置提交的版本,恢复后悔做了的事。大家都知道用reset命令。但是有几种形态需要整理共享一下,也方便我自己查阅。

一、首先解析以下这三个相关的状态和概念,

1、HEAD:可以描述为当前分支最后一个提交。即本地的信息中的当前版本。

2、Index:在工作副本修改之后执行过git add操作的版本文件,可以commit了的。

3、Working Copy:工作副本是你正在修改,但是没有执行任何git操作的文件。

总的来说,

代码修改,还没做任何操作的时候就是 Working Copy,

git add * 操作之后就是Index,

git commit 之后就是HEAD。如果代码修改了之后进行git add 操作,然后git commit,那么所有三者(HEAD,INDEX(STAGING),WORKING COPY)都是相同的状态,内容相同。

二、reset

  1. soft(更改HEAD)(恢复git commit的操作)

软重置。本来origin的HEAD和本地的HEAD一样,如果你指定--soft参数,Git只是单纯的把本地HEAD更改到你指定的版本那么,整个过程中,就HEAD的定义发生了变化,其他像Working Copy 和Index都没有变化。该参数用于git commit后,又要恢复还没commit的场景,重新审查代码,然后再推上去。

  2.hard(更改三者)

--hard参数将会将会重置(HEAD,INDEX(STAGING),WORKING COPY),强制一致。该参数用于在把工作副本改成一塌糊涂的时候,包括工作副本,一股脑恢复。有些就单纯修改文件,其中有些git add了,有些git commit了,通通不管,可以一个命令恢复。

  3.mixed(default)(恢复git add的操作,包含恢复git commit的操作)

--mixed是reset的默认参数,也就是当你不指定任何参数时的参数。它将重置HEAD到另外一个commit,并且重置index以便和HEAD相匹配。

三、记忆方法

工作流中先是本地修改,然后git add,然后gitcommit。以本地修改为最高量级,以自己为中心。该参数用于你在本地改了文件一部分commit了,一部分刚好git add了,这时候你要恢复到你的工作副本状态,要求再次审查代码。

1、soft: 重置git commit

2、mixed: 重置git commit 和 git add

3、hard: 重置git commit 和 git add 和工作副本的修改。

上一篇:Windows 搭建jdk、Tomcat、eclipse以及SVN、maven插件开发环境


下一篇:[书]WALL·E、龙与地下铁、中国美丽的故事、故事新编、四十自述、书虫、人工智能、大话数据结构