git远程代码库回滚(webstorm下)

git远程代码库回滚(webstorm下)

1. 场景

添加了一个文件【file-for-test.js】到git的控制下

进行了三次修改,并分别进行了三次commit,最后进行了一次push

git log结果如下图:

git远程代码库回滚(webstorm下)

【file-for-test.js】文件的内容如下图:

git远程代码库回滚(webstorm下)

现在希望,将远程代码库下的【file-for-test.js】文件回滚到【//lyn test1】的版本

2. 操作步骤

2.1. 【Version Control】——【Log】

git远程代码库回滚(webstorm下)

2.2. 右击【//lyn test1】行,【Reset Current Branch to Here...】

git远程代码库回滚(webstorm下)

2.3. 选择【Hard】,点击【Reset】

git远程代码库回滚(webstorm下)

此时git log结果如下图:

git远程代码库回滚(webstorm下)

2.4. 关键步骤:设置force push

2.4.1. 【VCS】——【Git】——【Push】

git远程代码库回滚(webstorm下)

2.4.2. 【Configure】

git远程代码库回滚(webstorm下)

2.4.3. 勾选【Allow force push】,【OK】

git远程代码库回滚(webstorm下)

2.5. 【VCS】——【Git】——【Push】

git远程代码库回滚(webstorm下)

2.6. 勾选【Push Tags】,选择【Current Branch】,选择【Force Push】

git远程代码库回滚(webstorm下)

2.7. 【Force Push】

git远程代码库回滚(webstorm下)

2.8. OK

git log结果如下图:

git远程代码库回滚(webstorm下)

【file-for-test.js】文件的内容如下图:

git远程代码库回滚(webstorm下)

3. 特别注意

后来发现,使用本文所述方法,在以下场景会出现问题:

动作1:开发人员A push了一个错误的commit到远程代码库

动作2:开发人员B pull了远程代码库到其本地代码库中

动作3:开发人员B修改了一定的代码,commit到其本地代码库中(与远程代码库中不冲突)

动作4:开发人员A按照本文操作,回滚远程代码库到push错误的commit之前的版本

动作5:开发人员B push本地代码库中的commit到远程代码库中

就在此时,由于开发人员B的本代码库中有开发人员A错误的commit,所以开发人员B的push操作会先将本地代码库(有错误commit的版本)和远程代码库(没有错误commit的版本)进行merge,得到一个有错误commit的版本,再push到远程代码库上。所以,你懂的。

故,结论:当出现需要远程代码库回滚时,采用直接修改后再重新push的方法,不要采用本文所描述的方法

上一篇:Unity3d Web3d资源的动态加载


下一篇:[异常解决] virtualbox从.VDI备份文件新建/恢复虚拟机(包括恢复各个备份节点)