Git Reset

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)都是相同的状态,内容相同。

–soft

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

软重置。仅改变当前head指针

–soft参数,Git只是单纯的把本地HEAD更改到你指定的版本,仅HEAD的定义发生了变化。

Working Copy 和Index的修改得以保留。

因为只回退了commit的信息。如果还要提交,可直接commit即可。

–hard(更改三者)

–hard 参数将当前 HEAD, INDEX(STAGING), WORKING COPY 全部改变。

不仅工作区修改的代码会还原,暂存区的信息也会丢弃。

–mixed(default)

恢复git add的操作,包含恢复git commit的操作

–mixed是reset的默认参数,不指定任何参数时默认使用。

移动head指针,改变暂存区内容,但不会改变工作区

总结

git reset用于在进行git addgit commit操作后,但还未进行git push操作时进行版本管理。

1、soft: 重置git commit

2、mixed: 重置git commit 和 git add

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