git revert 和 git reset 的区别
git revert
是用一次新的commit
来回滚之前的commit
git reset
是直接删除指定的commit
在回滚这一操作上看,效果差不多。但是在日后继续
merge
以前的老版本时有区别。因为git revert
是用一次**逆向的commit
** 中和之前的提交,因此日后合并老的branch
时,导致这部分改变不会再次出现git reset
是把某些commit
在某个branch
上删除,因而合并老的branch
再次merge
时,这些被回滚的commit
应该还会被引入git reset
是把HEAD
向后移动了一下,而git revert
是HEAD
继续前进,只是新的commit
的内容和要revert
的内容正好相反,能够抵消要被revert
的内容
git revert
git revert
撤销 某次操作,此次操作之前和之后的 commit
和 history
都会保留,并且把这次撤销作为一次最新的提交
* git revert HEAD 撤销前一次 commit
* git revert HEAD^ 撤销前前一次 commit
* git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
git revert
是提交一个新的版本,将需要 revert
的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容
总结
要保留历史 commit
,使用 git revert
!
要删除历史 commit
,使用 git reset
!