git reset 命令用于回退版本,可以退回指定的某一次提交的版本。
git reset [--soft | --mixed | --hard] [commit]
其中 [commit] 為提交點。
學(xué)習(xí) git reset 命令之前,首先需要了解一個概念 HEAD。
HEAD 是本地版本庫中當(dāng)前分支引用的指針,它總是指向該分支上的最后一次提交。
用 HEAD 表示的提交點 commit:
可以使用 ~數(shù)字表示。
git reset –mixed 移動 HEAD 到指定的 commit,同時重置暫存區(qū)為指定 commit 的狀態(tài)(將內(nèi)容從 HEAD 復(fù)制到暫存區(qū)中),但保留原先的工作目錄,同時將添加暫存區(qū)的修改撤銷到工作目錄中。
git reset --mixed 有 取消暫存文件 的效果。實際上它與 git add 所做的操作相反,可以用該命令撤銷 add 到暫存區(qū)的修改到工作區(qū)。
其中 --mixed 為默認(rèn),可以不用帶該參數(shù),也就是 git reset --mixed 等價于 git reset。
例如:
# 回退所有內(nèi)容到上一個版本 $ git reset HEAD^ # 回退 hello.php 文件的版本到上一個版本 $ git reset HEAD^ hello.php # 回退到指定版本 $ git reset 052e
git reset –soft 只移動 HEAD 到指定的 commit,但保留原先暫存區(qū)和工作目錄的內(nèi)容,同時會將指定 commit 之后提交的內(nèi)容設(shè)置到暫存區(qū)中。
git reset --soft
移動 HEAD 到指定的 commit,同時重置暫存區(qū)和工作目錄到指定 commit。
這三個參數(shù)中,只有 soft 和 mixed 是安全的,hard 會令工作丟失,使用時應(yīng)該小心。