发现git帮助中居然没有git revert(如下图),现就git reset 与git revert的用法做个小节。
reset
reset是指将当前head的内容重置,不会留任何痕迹。
git reset --hard HEAD~3
会将最新的3次提交全部重置,就像没有提交过一样。
根据--soft --mixed --hard,会对working tree和index和HEAD进行重置。
那么问题来了,使用git reset后如何恢复被清除的版本呢:
1.使用git reflog获得commit时的Id,如下图:
2.使用git reset id就可以恢复了,和 git revert commitSHA-1类似,如下图:
revert
revert是撤销某次提交,但是这次撤销也会作为一次提交进行保存。
此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交
* git revert HEAD 撤销前一次 commit
* git revert HEAD^ 撤销前前一次 commit
* git revert commitSHA-1 (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容
另外,使用git reset在merger的过程中有时还会出现冲突,且把历史操作信息删除了;所以,建议用git revert比较好。