前言
首先解析以下这三个相关的状态和概念
- HEAD:可以描述为当前分支最后一个提交。即本地的信息中的当前版本。(HEAD^表示HEAD的上一个版本,即当前版本的上一个版本)
- Index:在工作副本修改之后执行过git add操作的版本文件,可以commit了的。
- Working Copy:工作副本是你正在修改,但是没有执行任何git操作的文件。
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
git reset 命令语法格式如下:
git reset [--soft | --mixed | --hard] [HEAD]
–hard
用法:
git reset --hard HEAD^ # 将当前分支回退到上一个commit之后的状态;即包括工作副本和index
–soft
实例:
git reset --soft HEAD^
--soft
为软重置,上面的命令表示将当前版本恢复到未提交之前的状态;即当commit之后,需要取消commit恢复未commit的状态;此时Working Copy与Index的状态恢复至未commit之前一致.
–mixed
--mixed
为默认参数,可以不用带该参数.
即git reset [HEAD]
与git reset --mixed [HEAD]
是同一个含义.
实例:
git reset HEAD^ # 回退所有内容到上一个版本
--mixed
保留当前的所有文件,将HEAD指向指定的版本,并将期间的修改放入Working Copy中
其他说明
HEAD 说明:
HEAD 表示当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
HEAD^^^ 上上上一个版本
以此类推…
可以使用 ~数字表示:
HEAD~0 表示当前版本
HEAD~1 上一个版本
HEAD~2 上上一个版本
HEAD~3 上上上一个版本
以此类推…