git reset 命令

Post on Feb 01, 2022 by Wei Lin

git reset-撤销修改

功能:回退或重置到之前的状态,根据不同的分区有不同的参数。

命令格式:git reset [–soft | –mixed | –hard] [HEAD]

git reset的三种模式

Git Reset 三种模式

git reset就是让HEAD这个指针指向其它分支(执行一次commit)。例如我们有一次commit不是不是很满意,需要回到上一次的Commit里面。那么这个时候就需要通过reset,把HEAD指针指向上一次的commit的点。

它有三种模式,soft,mixed,hard

image-20230727010617456

注:图片来自其它博客


(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^会报错,表示不能回退了。

image-20230727010833599

git reset –mixed 重置暂存区

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

image-20230727010851733

image-20230727010902524


其它:

git reset file1                # 撤销指定文件的git add操作

git reset HEAD^ 回退到上个状态

说明:回退所有内容到上一个状态


其它:

git reset HEAD^ file1			# 回退指定文件到上一个状态
git reset 052e					# 回退到指定版本