清除工作区、暂存区所有文件回到上一次提交版本

$ git reset --hard 清除工作区、暂存区所有文件回到上一次提交版本

消除最近的几次提交

$ git reset --hard <commitid>

# git reset 参数
# -- hard 把 HEAD、工作区和暂存区 都修改为指定的 commit 的时候的文件状态
# --soft 把 HEAD 修改为指定的 commit 的时候的文件状态。工作区和暂存区变更保留。
# --mixed 不加参数的时候(默认参数),把 HEAD、暂存区修改为指定的 commit 的时候的文件状态。工作区的变更保留。

消除某次提交

$ git revert <commitid>

例如

C1 <-- C2 <-- C3 <-- C4Cn 全部是 commit,且 C1C2 的父亲,依此类推。

如果无须保留 C3C4,只想让分支回到 C2,那么执行 git reset --hard C2

如果其中 C3 有问题,你想撤销 C3 的 commit,执行 git revert C3。执行之后为此会生成 C5C5 就是清除 C3 的变更。历史树变成 C1 <-- C2 <-- C3 <-- C4 <-- C5

删除文件

$ git rm <filename>

如何让暂存区恢复成和 HEAD 的一样(放弃暂存区的更改)?

$ git reset HEAD

怎样取消暂存区部分文件的更改?

$ git reset HEAD -- <filename>

如何让工作区的文件恢复和暂存区一样(放弃工作区的更改)?

$ git checkout -- <filename>