14-git-10-reset

撤销区域

暂存区

撤销已经添加到暂存区中的修改,即让暂存区与最近的提交保持一致,可以使用如下命令,如下三条命令等效

git reset
git reset HEAD
git reset --mixed HEAD

撤销上一次向暂存区添加的某个指定文件,不影响工作区中的该文件

git reset -- <filename>
git reset -- file1 file2

暂存区和工作区

撤销所有暂存区和工作区中的所有变更,回复到上一次提交的状态

git reset --hard

回退到指定的提交

git reset --hard commitID

参数

  • soft: 不改变工作区和缓存区,只移动 HEAD 到指定 commit。
  • mixed: 只改变缓存区,不改变工作区。这是默认参数,通常用于撤销git add
  • hard:改变工作区和暂存区到指定 commit。该参数等同于重置,可能会引起数据损失。git reset --hard等同于git reset --hard HEAD
  • -p表示键入交互模式,指定暂存区的哪些部分需要撤销。
工作区 缓存区 HEAD
–soft
–mixed
–hard
// 将当期分支的指针倒退一个 commit,只改变仓库
git reset --soft HEAD~
// 将当期分支的指针倒退一个 commit,改变仓库,并且会改变暂存区
git reset HEAD~
// 将当期分支的指针倒退一个 commit,改变仓库,暂存区,工作区
git reset --hard HEAD~