前言
在团队开发中,使用 Git 作为版本开发工具,可以便捷地协同多人管理并行开发,但是由于自己或者其他人代码提交污染了远程分支,就需要对远程代码进行恢复操作,Git 提供了 reset 和 revert 两种命令来进行恢复操作,这两种操作效果是截然不同的,不太清楚这个原理的同学需要了解一下,以免在实际的开发过程中翻车,导致线上远程仓库不可逆转的操作。
首先从英文释义来讲,reset 是重置的意思,revert 是恢复、还原的意思,作为 Coder ,第一感觉 reset 的效果比 revert 更猛一些,实际情况也的确如此
git reset和revert区别:
- reset是彻底回退到指定的commit版本,该commit后的所有commit都将被清除,包括提交历史记录;
- revert仅仅是撤销指定commit的修改,并不影响后续的commit,但所撤销的commit被后续的commit修改了同一地方则会产生冲突;
- reset执行后不会产生记录,revert执行后会产生记录;
- reset执行后无法再次恢复,revert执行后因为不会清除记录,并且会产生新纪录,所以文件不会丢失,你可以多次执行revert恢复到某次改变之前的状态;
- reset执行后HEAD会后移,而revert的HEAD则一直是向前的;
git reset
语法:git reset --soft | --mixed | --hard 版本号--soft 回退时保留源码,仅仅回退 commit,修改的文件仍然保存在暂存区,再次提交时只需要 git commit
--mixed(默认)回退时保留源码,回退 commit 同时修改的文件会置于工作区,再次提交时需要 git add
--hard 回退时清除提交的源码(危险操作),源码和commit 都会回滚到某个版本
我们一般在使用时,如果已经push了,使用revert,如果没有,就是用reset。
警告:在团队合作的共同操作一个仓库的时候, git reset 命令一定要慎重使用,在使用的时候一定要再三确认其他同学的代码是否会被重置操作而导致代码丢失,导致一些提交记录的丢失,这些都是不可逆的,一定要慎重
小提示:在IDEA开发工具中,选中一个文件,右键Git选项中会发现有一个Rollback:
这里需要跟reset和revert区分一下,rollback并不属于git命令,它的作用是,在文件或代码修改后,但还未commit,想恢复到与远程仓库代码一致的状态,便可以执行rollback操作!
标签:reset,Git,--,revert,git,回退,commit From: https://www.cnblogs.com/godzzz/p/16924430.html