回退到指定的commit版本,指定commit版本之后的commit都将被重置
撤销指定commit版本的操作
,这个操作也会生成一个新commit,指定commit版本之前及之后的操作均不受影响
现在项目中有两个文件x.txt
和y.txt
,编辑这两个文件,每修改一个文件后都进行一次commit
1、新建空文件,修改文件,查看commit log
将下面信息写入x.txt
this is x!
查看commit log
将下面信息写入y.txt
this is y!
查看commit log
最终文件内容及commit log
1、git reset
为了更明显的对比,我们使用git reset --hard [commitid]
来回滚到指定版本,因为--hard
选项会在回滚的同时撤销全部对文件的修改
执行命令,回滚到最初版本
git reset --hard 911c8b68c489c93ff7599d7df521457f38ca7f3c
查看文件内容及commit log
可以看到,现在我们已经回滚到了911c8b68c489c93ff7599d7df521457f38ca7f3c
版本,在该版本后所有的修改都被撤销,同时commit也回退到该版本
2、git revert
执行命令,撤销对commitid
为6234f3405a3ed4d847793baa4c6e818040a3c190
的修改
git revert 6234f3405a3ed4d847793baa4c6e818040a3c190
查看文件内容及commit log
可以看到git revert
操作撤销了刚刚对x.txt
文件的修改,同时产成了一个新的commit,x.txt
文件内容变为空,但y.txt
文件的内容没有变动
git reset
操作会将版本回退至指定的commit
,指定commit
后的操作都将被撤销
而git revert
则撤销指定commit
的修改,同时生成一个新的commit
git revert
还支持同时撤销连续的几个commit
的修改
git revert (commit_older..commit_newer]
commit_older
到commit_newer
间的操作都将被撤销,注意:旧的commit在前边,commit_older的操作不会被撤销,commit_newer会被撤销