git reset 命令用于回退版本,可以退回指定的某一次提交的版本。
git reset [--soft | --mixed | --hard] [commit]
其中 [commit] 为提交点。
学习 git reset 命令之前,首先需要了解一个概念 HEAD。
HEAD 是本地版本库中当前分支引用的指针,它总是指向该分支上的最后一次提交。
用 HEAD 表示的提交点 commit:
可以使用 ~数字表示。
git reset –mixed 移动 HEAD 到指定的 commit,同时重置暂存区为指定 commit 的状态(将内容从 HEAD 复制到暂存区中),但保留原先的工作目录,同时将添加暂存区的修改撤销到工作目录中。
git reset --mixed 有 取消暂存文件 的效果。实际上它与 git add 所做的操作相反,可以用该命令撤销 add 到暂存区的修改到工作区。
其中 --mixed 为默认,可以不用带该参数,也就是 git reset --mixed 等价于 git reset。
例如:
# 回退所有内容到上一个版本 $ git reset HEAD^ # 回退 hello.php 文件的版本到上一个版本 $ git reset HEAD^ hello.php # 回退到指定版本 $ git reset 052e
git reset –soft 只移动 HEAD 到指定的 commit,但保留原先暂存区和工作目录的内容,同时会将指定 commit 之后提交的内容设置到暂存区中。
git reset --soft
移动 HEAD 到指定的 commit,同时重置暂存区和工作目录到指定 commit。
这三个参数中,只有 soft 和 mixed 是安全的,hard 会令工作丢失,使用时应该小心。