git reset-撤销修改
功能:回退或重置到之前的状态,根据不同的分区有不同的参数。
命令格式:git reset [–soft | –mixed | –hard] [HEAD]
git reset的三种模式
git reset就是让HEAD这个指针指向其它分支(执行一次commit)。例如我们有一次commit不是不是很满意,需要回到上一次的Commit里面。那么这个时候就需要通过reset,把HEAD指针指向上一次的commit的点。
它有三种模式,soft,mixed,hard

注:图片来自其它博客
(1) git reset –soft HEAD^
回退到上个版本,保留工作目录和暂存区。
(2) git reset HEAD^
默认为–mixed,回退到上个版本,保留工作目录,但清空暂存区。
(3) git reset –hard HEAD^
回退到上个版本,重置工作目录和暂存区。
reset –hard 会在重置 HEAD 和branch的同时,重置暂存区和工作目录里的内容。也就是没有commit的修改会被全部擦掉。
注意:若不带HEAD参数,表示不回退版本,只是重置工作区或暂存区。
(4) HEAD 说明:
HEAD 表示当前版本;
HEAD^ 上一个版本;
HEAD^^ 上上一个版本;
以此类推…
也可以使用 ~数字表示
HEAD~0 表示当前版本;
HEAD~1 上一个版本;
HEAD^2 上上一个版本;
以此类推…
注意:只有commit之后才会产生一个版本,如果只有当前HEAD是根HEAD(即没有是一个版本),则执行git reset HEAD^会报错,表示不能回退了。

git reset –mixed 重置暂存区
说明:–mixed为默认参数,可以不带。重置暂存区(即撤销之前的所有 git add 操作),工作区文件内容保持不变。


其它:
git reset file1 # 撤销指定文件的git add操作
git reset HEAD^ 回退到上个状态
说明:回退所有内容到上一个状态
其它:
git reset HEAD^ file1 # 回退指定文件到上一个状态
git reset 052e # 回退到指定版本