假设我们有这样的历史提交记录:
G1 - G2 - G3 - B1 - B2 - B3
G1 - G3是好的commit,B1 - B3是坏的commit,我们想撤销坏的commit,恢复到G3的状态
git reset:
如果修改还没有push到sever,可以使用reset命令$ git reset --hard HEAD~3git revert:
如果修改已经push到server,要使用revert,下面的方式是一次revert多个commit:$ git revert --no-commit HEAD~2^..HEAD(^表示父级,上一级)或者$ git revert --no-commit HEAD~3..HEAD(左开右闭, --no-commit选项通知git执行revert,但是不自动commit)
然后我们可以查看当前的仓库状态(git status),然后commit,执行完之后的历史记录如下:
G1 - G2 - G3 - B1 - B2 - B3 - R`
R`将使仓库状态返回到G3
也可以使用以下方法,指定所有需要revert的commit:$ git revert --no-commit HEAD HEAD~1 HEAD~2