git回滚操作系列
准备工作
- 本地环境
- 线上环境
- 分支 master
场景1
- 线上环境当前与本地一致
- 先把线上回滚至早期
获取提交日志
[root@root]# git log
回滚到指定版本
[root@root]# git reset --hard e6d68bc72be4d364fa37af95d2d3693dc06ccecf
- 回到本地代码可发现,git pull了之后本地分支的代码没有变化,这是因为线上的分支只是回滚了,但是没有推送到远程分支,只是在线上的本地分支有修改,这个时候需求去线上推送到远程分支
- 线上环境推送远程分支
此时可以发现只是通过git push推送的分支并不能直接推送到远程分支,原因是因为当前分支因为回滚了操作属于旧分支,而远程分支是比较新的,所以需要强制推送
[root@root]# git push -f
- 回到本地环境拉取代码
此时还是没有变化,需要在本地强制拉取
git fetch --all
git reset --hard origin/master
场景2
- 本地回滚代码
回滚到指定版本
git reset --hard e6d68bc72be4d364fa37af95d2d3693dc06ccecf
- 本地强制提交
git push -f
- 线上拉取