在日常的开发中,我们经常使用Git来进行版本控制。有时候,我们可能会不小心将错误的代码 Push 到远程仓库,或者想要在本地回退到之前的某个版本重新开发。
或者像我一样,写了一些感觉以后很有用的优化方案push到线上,又接到了一个新的需求。但是呢,项目比较重要,没有经过测试的方案不能轻易上线,为了承接需求只能先把push上去的优化方案先下掉。
现在我的分支是这样的,我想要在本地和远程仓库中都恢复到help文档提交的部分。
![](https://www.shuli.cc/wp-content/uploads/2024/05/frc-056d58547e5245dcdd62699a16e39e13.png)
最简单粗暴的方法
如果你的错误代码不是很多,那么你其实可以通过与你想要恢复到的commit进行对比,然后手动删除错误代码,然后删除不同的代码。
![](https://www.shuli.cc/wp-content/uploads/2024/05/frc-99558327f374bcf3955b69f3d3cf252a.png)
按住 ctrl 选择想要对比的两个commit,然后选择 Compare Versions 就能通过对比删除掉你想要删除的代码。
这个方案在代码很简单时时非常有效的,甚至还能通过删除后最新commit和想要退回的commit在Compare一下保障代码一致。
但是这个方法对于代码比较复杂的情况来说就不太好处理了,如果涉及到繁杂的配置文件,那更是让人头疼。
而且,这样还会保留错误提交的记录,对于有强迫症的我来说,有点接受不能。对此,git也有一套较为优雅的操作流程,同样能解决这个问题。
IDEA 中 Git 较为优雅的方法
1. Reset Current Branch 到你想要恢复的commit记录
![](https://www.shuli.cc/wp-content/uploads/2024/05/frc-b54ae6f12eadc5bba23915caa9d59f88.png)
这个时候会跳出四个选项供你选择,我这里是选择hard。
其他选项的含义仅供参考,因为我也没有一一尝试过。
-
Soft:你之前写的不会改变,你之前暂存过的文件还在暂存。 -
Mixed:你之前写的不会改变,你之前暂存过的文件不会暂存。 -
Hard:文件恢复到所选提交状态,任何更改都会丢失。你已经提交了,然后你又在本地更改了,如果你选hard,那么提交的内容和你提交后又本地修改未提交的内容都会丢失。 -
keep:任何本地更改都将丢失,文件将恢复到所选提交的状态,但本地更改将保持不变。你已经提交了,然后你又在本地更改了,如果你选keep,那么提交的内容会丢失,你提交后又本地修改未提交的内容不会丢失。
![](https://www.shuli.cc/wp-content/uploads/2024/05/frc-f1e8ad212d975983ba04c2c6f09d757a.png)
![](https://www.shuli.cc/wp-content/uploads/2024/05/frc-b352fb97a4c356a5871f5cbf1c39cc2e.png)
![](https://www.shuli.cc/wp-content/uploads/2024/05/frc-4257fa60ce49bc1f14b598c275b62ac6.png)
然后,之前错误提交的commit就在本地给干掉了。但是远程仓库中的提交还是原来的样子,你要把目前状态同步到远程仓库。也就是需要把那几个commit删除的操作push过去。
打开push界面,虽然没有commit需要提交,需要点击Force Push,强推过去。
![](https://www.shuli.cc/wp-content/uploads/2024/05/frc-b352fb97a4c356a5871f5cbf1c39cc2e.png)
需要注意的是对于一些被保护的分支,这个操作是不能进行的。需要自行查看配置,我这里因为不是master分支,所以没有保护。
![](https://www.shuli.cc/wp-content/uploads/2024/05/frc-ac4bb5021b8bf9bf3b9f229774d2da8e.png)
可以看到,远程仓库中最新的commit只有我们的help文档。在其上的三个提交都没了。
![](https://www.shuli.cc/wp-content/uploads/2024/05/frc-2f95b28be8363c40ae9fc4b4062e04d7.png)
注意: 以上使用的是2023版IDEA,如果有出入的话可以考虑搜索使用git命令。
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=19869,转载请注明出处。
评论0