背景
因为粗心在主分支上修改了代码,push了上去,污染了主分支,希望将主分支之后的修改回滚,包括提交记录,就是远程的记录中回到希望回到的版本,保持干净。
git push -f 可以做到,会冲掉所有的commit,如果git push -f 之后希望回滚:http://blog.sina.com.cn/s/blog_66cd08930102x0ln.html
如果不希望将后面的commit全部冲刷掉,https://blog.csdn.net/gomeplus/article/details/78241070
针对于我的需求(希望将远端后续的commit冲掉,从而保证纯净)
- 切换到需要回退到历史的分支(比如uat的脏了,就回退uat的),然后继续下面两步
- 切换到需要回退到历史的分支(比如uat的脏了,就回退uat的)的commit id:
git reset --hard 381b971f62f3f16f098d4f2406b33eb94bf91209
- 强推倒远程(同时会将已经脏的push操作删除,回到最原始的状态)
git reset --hard 381b971f62f3f16f098d4f2406b33eb94bf91209
引用
回退命令:
$ git reset --hard HEAD^ 回退到上个版本
$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
$ git reset --hard commit_id 退到/进到 指定commit的代码
强推到远程:
$ git push origin HEAD --force
https://www.cnblogs.com/spring87/p/7867435.html