之前不小心合并到同事提交的错误的代码,因为同事进行了错误的merge并提交,导致远端的分支上代码已经十分混乱了,于是研究了下怎么回退远端分支。
使用的git是码云的git仓库,开发工具是idea。
首先上码云(或者对应仓库,或者直接在idea的version history里)看最近的一个较为正确的代码版本是多少,确定要回退到的远程分支版本。
然后通过
git reset --hard 85d890681b6935350c0d8cf373699675c3dfbbf9
将本地分支强行恢复到正确的版本。
之后使用强制提交覆盖
git push -f
覆盖后当前本地的分支就强制提交到了远端分支,远端分支就回退到了对应版本。
接下来有几种情况:
1.如果其他同事没有pull到错误的提交,也就是他们本地还是基于上一次正确提交的话,那他们可以直接提交当前更新,因为基于的版本号是一样的。
2.如果其他同事已经pull到了错误的提交,但他们自己并没有做代码的编写或者更新,也没有commit过,那直接用第一条命令reset回退到正确版本就好了。
3.如果其他同事pull到错误的提交并且没有注意,在错误的提交上做了commit与push,那如果想要找回这次更新,需要他自己在提交历史中确定提交的哪些文件,然后使用第一条命令回退之后通过idea的local history功能对那些文件进行恢复,然后再次提交。
第三种情况暂时没查到什么同分支下的好的处理方法,如果有的话希望哪位大佬可以分享一下。