git如何回滚远程仓库

今天是个浮躁的日子,好像一整天也没有集中注意力看点东西。听到了群里在讨论一个线上的问题,进行了版本回退。响应很及时,想到如果自己的代码需要回退,应该如何操作更为合理。

git revert和git reset的区别

git revert和git reset是两种版本回退操作,revert需要提交信息,会生成一条新的提交,这条提交记录会将指定版本后的提交记录抵消掉,而且以前的历史记录都会保留。但是reset是进行HEAD的位置切换,不会出现新的提交记录。

git revert

我尝试提交了提交了四次,可以看到我在尝试revert的时候遇到了冲突,git应该是将暂存区关于冲突的文件删除,我需要在处理完冲突之后git add将文件添加到暂存区,然后新建一个提交git commit -m “本次版本回退的commit信息”。

cmd-markdown-logo

我们可以看到之前的历史提交记录都没有被改变,只是在之前的基础上添加了一次提交记录:

cmd-markdown-logo

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:

cmd-markdown-logo

如何进行远程仓库版本回退

如何进行版本回退,方法一:

1
2
git revert commitid //可能需要进行merge操作
git push

方法二:

1
2
git reset --hard commitid
git push -f //强制提交更改,远程分支的head会被强制更改