在讨论这两个命令之前,先谈论一下git的工作原理。
工作流程
- HEAD为头指针,指向需要提交或修改的区域。
- Index索引区或缓存区,缓存要提交的文件。
- Working Directory 为工作目录,最初对文件进行修改的地方。
git reset
-
git reset --soft HEAD~1
此命令将修改HEAD指向到在这次commit之前,可撤销之前的commit.
-
git reset HEAD~1
此命令将修改HEAD指向的同时修改index区域,撤销缓存区的文件。
-
git reset --hard HEAD~1
此命令将修改HEAD指向以及撤销index缓存区文件同时,将Working Directory工作目录的文件撤销重置。
git revert
-
git revert HEAD
此命令将针对上一次commit进行一次回滚,逆向操作。比如说上一次提交 时在文档中添加“aaaaaa”,使用revert将会使“aaaaaa”删除。并在次进行一次提交。