新版IDEA中Git的使用(三)

说明:前面介绍了在新版IDEA中Git的基本操作分支操作,本文介绍一下在新版IDEA中,如何回滚代码;

分以下三个阶段来介绍:

  • 未Commit的文件;

  • 已经Commit,但未push的文件;

  • 已经push的文件;

未Commit

对于未Commit的文件,回滚代码,可以在Commit窗口,选中文件,鼠标右键,选择Rollback,即可回滚代码,恢复到未修改状态;

弹出窗口,选择Rollback

文件恢复到未修改状态的黑色;

而对于新增的文件,直接在Commit界面里删掉即可,当然,也可以选中,点Rollback,但文件会加入到未追踪状态,还是会出现在IDEA中,就不如直接删除掉。

未push

比如,我新增了一个文件、修改了一个文件,提交了,但是还没有push到远程仓库(可以看到分支名后面有箭头),此时我想回滚这次提交;

可以选择这次提交前面的提交,鼠标右键,点击Reset Current Branch to Here,表示将代码回滚到这次提交的状态;

点击后,会出现下面几种模式,选择如何处理回退的文件;

  • Soft:修改的文件、新增的文件都恢复到暂存区;

  • Mixed(默认):修改的文件加入到暂存区,新增的文件恢复到未追踪;

  • Hard:修改的文件、新增的文件都丢失,并且当前分支未commit的文件也恢复(新增的删掉,修改的恢复原样);

  • Keep:修改的文件、新增的文件都丢失,当前分支未commit的文件,新增的文件恢复到未追踪,修改的文件保持原样;

可以根据自己的需要进行选择,选择前想清楚,回退的这部分代码是怎么来的:

  • 如果是push的,那么应该选择Soft、Mixed,避免回退后代码丢失;

  • 如果是pull的,那么应该选择Hard、Keep,避免多出来的代码,影响自己分支;


回滚未push的代码,除此之外,还有以下几种:

  • Undo Commit...:回滚最近一次提交;

  • Revert Commit:回滚某一次提交,并留下回滚记录;

  • Drop Commit:回滚某一次提交,并不留下回滚记录;

以上操作,均是单次操作的回滚,即仅回滚此次操作的文件,例如A提交创建了文件,B提交修改了文件,如果回滚A提交,B提交中修改的文件就不存在了,就会发生冲突。

已push

例如现在,我将新增的代码,add.txt文件push到远程仓库。push上去后发现这段代码有问题,或者我想修改一下comment内容;

可以这么做,首先回滚本地的提交;

修改代码或者修改Comment信息后,再push

这次选择Push下面的这个操作,Force Push

选择Force Push

远程仓库的代码就被本次push冲掉了;

已经push的提交不推荐使用回滚,建议修改代码、文件后重新push一次。如果该分支有其他同事在push代码,上面这种方法可能会冲掉同事push的代码,有风险。

总结

本文介绍在新版IDEA中Git关于回滚的操作,参考B站UP主【小陈努力码代码】的视频 IDEA小技巧-Git的回滚&&强推&&代码找回

相关推荐
vx_bscxy3223 分钟前
告别毕设焦虑!Python 爬虫 + Java 系统 + 数据大屏,含详细开发文档 基于web的图书管理系统74010 (上万套实战教程,赠送源码)
java·前端·课程设计
字节拾光录20 分钟前
Java工具库三足鼎立:Hutool、Apache Commons、Guava深度测评与场景化选型指南
java·apache·guava
爱学习的小可爱卢27 分钟前
Java UDP编程实战:UDP数据报套接字编程DatagramPacket、DatagramSocket 、InetSocketAddress
java·udp·udp数据报
未来之窗软件服务29 分钟前
幽冥大陆(三十五)S18酒店门锁SDK go语言——东方仙盟筑基期
java·前端·golang·智能门锁·仙盟创梦ide·东方仙盟·东方仙盟sdk
r***93481 小时前
【Redis】在Java中以及Spring环境下操作Redis
java·redis·spring
6***09261 小时前
如何快速搭建简单SpringBoot项目网页
java·spring boot·intellij-idea
放学有种别跑、1 小时前
GIT使用指南
大数据·linux·git·elasticsearch
雨雨雨雨雨别下啦1 小时前
【从0开始学前端】 Git版本控制系统
前端·git
q***44811 小时前
spring实例化对象的几种方式(使用XML配置文件)
xml·java·spring
q***98521 小时前
Spring Boot:Java开发的神奇加速器(二)
java·spring boot·后端