回滚的几种姿势

git revert

使用 git revert 可以把某个提交撤销,如果该提交是某个合并,还可以将对应的合并撤销。之后会生成一个新的 Revert 节点提交。

比如

1
git revert -m 1 COMMIT_ID

demo在这里

但是这个方法有个坏处,如果你 revert 以后想再次合并,那不能直接合并,只能通过再次 revert 该 Revert 节点来达到重新提交的目的。

所以在项目开发的过程中,开发新特性时特别需要开新的分支,合并到开发分支则务必产生一个合并节点,以便后续的回滚。


git reset

这也是一个巧妙的方法。利用 git reset –hard/soft 来产生一个回滚的提交。

比如

1
2
git reset --hard DEST_COMMIT_ID
git reset --soft SRC_COMMIT_ID

demo在这里

好处就是可以在这个基础上修改代码,后续的回滚也比较简单。

坏处就是这种方式会直接回滚某段区间的操作,注意不要把别人的提交也弄没了。


–amend

如果遇到用 amend 提交了,又想撤销,可以试试这个方法,将最近的一次提交撤销。

1
git reset --soft HEAD@{1}

demo在这里

手癌发作时可以试试ㄟ( ▔, ▔ )ㄏ