如何让远程仓库回退到某个之前的版本

pull 代码再次遇到冲突,这次突发奇想,想试试用 git stash 来处理,结果 push 完,队友反映她 pull 后好多代码被重置,并且遇到严重冲突,受牵连70几个文件。我查看了下 commit 记录,惊讶地发现,我处理完冲突传上去的代码确实都变成了我本地的老代码,pull 下来的修改都被我重置了。都是乱用 git stash 的错。。还好发现的及时,我立即决定撤回远程仓库中我的那次 push,让代码回滚到我 push 前的状态。那么如何让远程仓库回退到某个之前的版本?步骤如下。

只需五步,方法如下:

1. 查看 commit 日志,确定要回滚到的 commit id(前7位即可)

1
git log --oneline

找到要回到的那次 commit ,复制 commit id,比如我这里是 b8b2df7

2. 先备份下当前版本

1
2
git checkout -b old_dev
git push origin old_dev:old_dev

3. 本地回滚到指定代码版本

1
git reset --hard b8b2df7

4. 删除远程对应的分支

1
2
3
git push origin :dev
//or
git push origin --delete dev

5. 重新创建远程分支

1
git push origin dev:dev

搞定!

或者,不使用删除分支再建分支的方法,这个要两部,有些麻烦,可以使用强制推送,只需一步:

1
git push origin dev:dev -f  #因为reset后本地仓库落后于远程仓库,因此要强制提交