首先,我们要搞清楚,git的4个存储区域,分别是工作区,暂存区,本地仓库,远程仓库(图中无体现)。
- 首先当我们本地的文件发生变更后,会立即反馈到工作区,
- 然后我们执行git add . 后,工作区的代码就会被提交到暂存区,
- 然后执行git commit -m 'commit-desc',变更会被提交到本地仓库
- 然后执行git push,将代码推送到远程仓库
好了,说回git reset,当我们提交代码后突然发现代码有bug,此时我们就需要git reset来帮我们把之前的代码先回滚掉,从而不要对生产造成影响。如下图
git reset HEAD~
回滚到上一次提交,并将上次的提交文件重置到工作区
git reset fileName
将暂存区的某个文件回滚到工作区
git reset --soft commitID
将这个commitID前的提交重置到暂存区,如果暂存区已经有文件,不会清除在暂存区已有的文件
git reset --mixed commitID
将这个commitID前的提交重置到工作区,同时把暂存区的变更回退到工作区,如工作区已有未提交文件,不会清除
git reset --hard commitID
重置分支到这个commitID,并且丢弃暂存区,工作区上面所有修改(除了工作区新增的文件)