1 简介
最近在使用git时遇到了远程分支需要版本回滚的情况,于是做了一下研究,写下这篇博客。
2 问题
如果提交了一个错误的版本,怎么回退版本?
如果提交了一个错误的版本到远程分支,怎么回退远程分支版本?
如果提交了一个错误的版本到公共远程分支,又该怎么回退版本?
3 本地分支版本回退的方法
如果你在本地做了错误提交,那么回退版本的方法很简单
先用下面命令找到要回退的版本的commit id:
git reflog
接着回退版本:
git reset --hard Obfafd
0bfafd就是你要回退的版本的commit id的前面几位
4 自己的远程分支版本回退的方法
如果你的错误提交已经推送到自己的远程分支了,那么就需要回滚远程分支了。
首先要回退本地分支:
git reflog
git reset --hard Obfafd
紧接着强制推送到远程分支:
git push -f
注意:本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支
5 公共远程分支版本回退的问题
看到这里,相信你已经能够回滚远程分支的版本了,那么你也许会问了,回滚公共远程分支和回滚自己的远程分支有区别吗?
答案是,当然有区别啦。
一个显而易见的问题:如果你回退公共远程分支,把别人的提交给丢掉了怎么办?
下面来分析:
假如你的远程master分