今天是个浮躁的日子,好像一整天也没有集中注意力看点东西。听到了群里在讨论一个线上的问题,进行了版本回退。响应很及时,想到如果自己的代码需要回退,应该如何操作更为合理。
git revert和git reset的区别
git revert和git reset是两种版本回退操作,revert需要提交信息,会生成一条新的提交,这条提交记录会将指定版本后的提交记录抵消掉,而且以前的历史记录都会保留。但是reset是进行HEAD的位置切换,不会出现新的提交记录。
git revert
我尝试提交了提交了四次,可以看到我在尝试revert的时候遇到了冲突,git应该是将暂存区关于冲突的文件删除,我需要在处理完冲突之后git add将文件添加到暂存区,然后新建一个提交git commit -m “本次版本回退的commit信息”。
我们可以看到之前的历史提交记录都没有被改变,只是在之前的基础上添加了一次提交记录:
git reset
git reset的理解相对简单一些,它只是单纯做一个HEAD指针的切换并不会新增一个提交。
1 | git reset --hard commitid |
通过commitid可以切换到指定的提交。也可以通过
1 | git reset --hard HEAD~数值 |
或者
1 | git reset --hard HEAD^ |
这些形式都可以回退到指定的历史版本。在刚才的git log基础之上git reset —hard HEAD~2:
如何进行远程仓库版本回退
如何进行版本回退,方法一:
1 | git revert commitid //可能需要进行merge操作 |
方法二:
1 | git reset --hard commitid |