$ git reset --hard 清除工作区、暂存区所有文件回到上一次提交版本
$ git reset --hard <commitid>
# git reset 参数
# -- hard 把 HEAD、工作区和暂存区 都修改为指定的 commit 的时候的文件状态
# --soft 把 HEAD 修改为指定的 commit 的时候的文件状态。工作区和暂存区变更保留。
# --mixed 不加参数的时候(默认参数),把 HEAD、暂存区修改为指定的 commit 的时候的文件状态。工作区的变更保留。
$ git revert <commitid>
例如:
C1 <-- C2 <-- C3 <-- C4,Cn 全部是 commit,且 C1 是 C2 的父亲,依此类推。
如果无须保留 C3 和 C4,只想让分支回到 C2,那么执行 git reset --hard C2。
如果其中 C3 有问题,你想撤销 C3 的 commit,执行 git revert C3。执行之后为此会生成 C5,C5 就是清除 C3 的变更。历史树变成 C1 <-- C2 <-- C3 <-- C4 <-- C5。
$ git rm <filename>
$ git reset HEAD
$ git reset HEAD -- <filename>
$ git checkout -- <filename>