背景
因為粗心在主分支上修改了代碼,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