文章目录
作用
git reset
命令用于回退版本,可以指定退回某一次提交的版本。
使用
HEAD 说明:
-
HEAD 表示当前版本
-
HEAD^ 上一个版本
-
HEAD^^ 上上一个版本
-
HEAD^^^ 上上上一个版本
-
以此类推…
可以使用 ~数字表示
-
HEAD~0 表示当前版本
-
HEAD~1 上一个版本
-
HEAD~2 上上一个版本
-
HEAD~3 上上上一个版本
-
以此类推…
git reset 命令语法格式如下:
git reset [–soft | --mixed | --hard] [HEAD]
git reset --soft
将HEAD引用指向给定提交。
索引(暂存区)
和工作目录
的内容是不变
的,在三个命令中对现有版本库状态改动最小。(改变本地仓库
中的版本,被回退的那些版本的修改会被放在暂存区
,可以再次提交)
git reset --soft HEAD
git reset --mixed(默认模式 可以直接写 git reset)
HEAD引用指向给定提交,并且
索引(暂存区)
内容也跟着改变
,工作目录
内容不变
。这个命令会将索引(暂存区)变成你刚刚暂存该提交全部变化时的状态,会显示工作目录中有什么修改。(就是用本地仓库
的版本覆盖了暂存区
的,回退的那些版本的修改会放在工作目录
,可以先加到暂存区
,然后再提交)
git reset HEAD^ # 回退所有内容到上一个版本
git reset HEAD^ helloworld.html # 回退 hello.php 文件的版本到上一个版本
git reset 052e(commit id) # 回退到指定版本
git reset --hard (慎用)
HEAD引用指向给定提交,
索引(暂存区)
内容和工作目录
内容都会改变
给定提交时的状态。也就是在给定提交后所修改的内容都会丢失(新文件会被删除,不在工作目录中的文件恢复,未清除回收站的前提)。(就是用本地仓库
的版本覆盖暂存区
与工作目录
,被回退的那些版本的修改会直接舍弃,好像它们没有来过一样)
git reflog(对于-- hard模式下的回退)
当一不小心执行了hard模式,想要进行版本回退
git reflog //获得commit_id
git reset --hard commit_id //就能回到对应的版本
总结
git reset产生的影响 | |||
选项 | 本地仓库(HEAD) | 暂存区 | 工作目录 |
--soft | 有 | 无 | 无 |
--mixed(默认) | 有 | 有 | 无 |
--hard | 有 | 有 | 有 |