概述
在正常开发中,我们一般都会进行代码提交,push到远程仓库,我这边代码管理工具用的是Git.有的时候我们会发现后面提交的代码不适应突发的需求,需要进行代码删除或者回滚,本文就介绍了如何实现在Idea对已经提交到远程仓库的push代码进行撤回
实战:
我目前分支的提交记录如下:
在5次提交记录中,我第一次新增了test1文件,在后面提交中对test1文件里面的内容进行了变更,我第四次新增了test2文件,并且文件内容为:test2第一次提交的内容,第三次我同时对test1、test2文件进行了编辑提交:
目前我发现【第一次提交的内容】以后提交的代码都有问题,想把提交记录还原到【第一次提交的内容】,在此基础上重新进行开发:
方法1:(此方法适用于这期间提交的代码比较少的情况)
按住 ctrl 分别选择【第一次提交的内容】和【test2第二次提交的内容、test第四次提交内容】两个commit节点,然后选择Compare Versions就能通过对比留下自己要的代码(复制粘贴替换就行)
这个方案在代码很简单时时非常有效的,甚至还能通过删除后最新commit和想要退回的commit在Compare Versions一下保障代码一致。
但是这个方法对于代码比较复杂的情况来说就不太好处理了,而且,这样还会保留错误提交的记录,很不友好。对此,Git也有一套较为优雅的操作流程,同样能解决这个问题
方法2:(此方法适用于这期间提交的代码比较少的情况)
选择【第一次提交的内容】-鼠标右键点击-【Reset Current Branch to Here…】
这个时候会跳出一个弹窗,里面有四个选项供你选择,我这里是选择hard
每个选项的具体意思:
Soft :你之前写的不会改变,你之前暂存过的文件还在暂存。
Mixed :你之前写的不会改变,你之前暂存过的文件不会暂存。
Hard :文件恢复到所选提交状态,任何更改都会丢失。你已经提交了,然后你又在本地更改了,如果你选hard,那么提交的内容和你提交后又本地修改未提交的内容都会丢失。
keep :任何本地更改都将丢失,文件将恢复到所选提交的状态,但本地更改将保持不变。你已经提交了,然后你又在本地更改了,如果你选keep,那么提交的内容会丢失,你提交后又本地修改未提交的内容不会丢失。
点击【Reset】,会发现本地分支的提交已经恢复到你想要恢复的【第一次提交的内容】,test2文件也没了。
但是这个时候我们去gitLab查看对应项目的提交记录和代码,发现以前的提交记录和代码还是存在的,因为它只是本地开发分支进行了还原,我们需要把我们本地的分支同步到远程仓库,远程仓库才会同步更新
我们随便选中项目的一个文件即可-鼠标右键:Git-Repository-push
点击之后会一个弹框,会发现弹框里面没任何changes.这个时候我们需要点击push,然后选择Force push,强推过去
强推完之后我们再去Gitlab查看对应分支,可以发现提交记录已经同步,【第一次提交内容】以后的提交记录都没了:
PS:需要注意有些分支是受保护的(比如master),强推的时候需要查看自己有没有权限,没权限的话会出现强推失败
版权归原作者 WangKing_CN 所有, 如有侵权,请联系我们删除。