概念
- 本地仓库
- 暂存区
- 工作区
命令操作
命令解析
- reset操作将移动 HEAD指向,如果当前分支为develop,此时develop的指向也将改变。reset修改的是.git/refs/heads/develop的内容。
- checkout修改的是.git/HEAD的内容。
常用命令
-
git reset --soft HEAD~
工作区和暂存区不变,仓库指向上一版本;本质上是撤销git commit
命令;重新修改代码进行提交,类似git commit --amend
命令; -
git reset --mixed HEAD~
工作区和仓库不变,暂存区指向上一版本;git reset
的默认行为; -
git reset --hard HEAD~
将仓库,暂存区,工作区,重置为上一版本;--hard 标记是 reset 命令唯一的危险用法,对于提交的记录可通过reflog
进行找回; git reset --mixed HEAD file.txt
撤销命令
-
git commit --amend
重新修改上提交信息,或者将当前修改合并到上一版本; -
git reset HEAD test.txt
撤销git add test.txt
操作 -
git checkout -- test.txt
危险操作,将修改重置为当前版本,修改内容丢失。
参考: [参考文档] (https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E7%BD%AE%E6%8F%AD%E5%AF%86)