- 本地修改,但未执行
git add命令
git checkout .撤销全部修改,修改的代码没了,不在工作区和暂存区
git checkout fileName撤销某个文件(需要带有相对路径,或者复制执行git status命令后显示修改的 fileName) - 本地修改,执行了
git add命令
git reset HEAD .撤销全部 staged,回到了git add前的状态,修改的代码在工作区
git reset HEAD fileName撤销某个文件
备注: HEAD 与 head 这两种写法均可以 - 本地修改,执行了
git add与git commit命令
git reset commit_id回到了执行git add命令之前的状态,此时修改的代码仍然在工作区,不在暂存区
git reset --hard commit_id回到了 commit_id 时的状态,此时修改的代码没了,不在工作区和暂存区
revert
本地修改,执行了 git add 与 git commit 命令后的其他措施
git revert commit_id 用一次跟 commit_id 完全相反的更改提交代码。
执行 git commit 命令后到 C 处了。

image.png
此时执行
git revert C,此时 head 指向了 D处,但是 D 处的代码与 B 处的代码完全一样。
image.png
因此,
revert 命令相当于将 B 到 C 那次更改的代码又改回去了,然后提交,就得到了 D