详解IDEA git 版本回滚

作者简介

目录

1.git分区

2.未commit,进行回滚

3.commit未push,进行回滚

3.1.undo commit

3.2.reset

4.已commit&push,进行回滚


1.git分区

git的版本回滚其实就是回滚不同的分区,所以在聊git回滚之前我们有必要简单了解一下git的分区。git在本地有三大分区:工作区、暂存区、版本库。

工作区:正在编写,还未add的部分,红色。

暂存区:add后的代码,绿色。

版本库:commit后的代码,灰色。

在IDEA中,在loacl changes中可以看到在工作区中和暂存区中的内容:

版本库中的内容可以从log中看出来,log中可以看到commit test这条提交的分支是本地的main分支,如果是已经同步到远端的提交分支会显示为origin/main:

2.未commit,进行回滚

已经add到暂存区,但是未commit到本地版本库的改动有两种:

  • 新增的文件

  • 修改的文件

新增的文件直接删除即可,如果是修改的文件,使用roll back来回滚。在local change里面,选择想要rollback的文件即可:

也可以直接右击要rollback的文件然后rollback也行。

3.commit未push,进行回滚

3.1.undo commit

commit到本地版本库并且还未push的代码,可以在log里右击单次提交进行undo commit:

需要注意的是undo commit只能从最后一次commit开始回滚,undo commit后会要求选择一个变更列表来存放回滚后的内容,可以自己新建一个,比如此处的commit test,也可以在下拉框里选择一个已经存在的,如果是自己新建的变更列表,勾选了set active选项,后续的变动也会存放到该变更列表中:

可以看到多了一个变更列表:

变更列表有什么用喃?其实变更列表可以把它视为一个命名空间,就是用来做资源隔离的,在进行commit的时候需要下拉选择不同的变更列表来进行提交:

3.2.reset

有时候我们需要直接将本地的代码回滚到版本库的某一个版本,这时候可以使用reset来进行回滚。reset有几种模式:

  • soft,将版本回滚,工作区不动,暂存区=原来的+回滚后和回滚前的版本差异。

  • mixed,将版本回滚,回滚到了所有 git add 和 git commit 的命令执行之前。暂存区变为空,变更全部到了工作区。

  • hard,将版本回滚,将所有工作区和暂存区的文件修改全部清空,是真正的覆盖,不能找回了。

  • keep,将版本回滚,将所有commit的内容丢弃掉,未commit的内容保留。

在log上选择要回滚到的具体版本:

reset时会要求选择回滚的模式:

4.已commit&push,进行回滚

对commit&push的内容进行回滚其实就是对远端仓库的代码版本进行回滚,在实际开发中偶尔会将内容误推送到了远端仓库上去。比如commit的message写错了,查看log的时候才发现,比如不小心将本地还没有开发完成的代码推送到远端仓库了,由或者合并冲突或者分支的时候合并错了......等等这些情况都要我们对远端仓库的代码进行回滚。

回滚的方式其实很简单,就是将本地的代码版本回滚到指定版本(至于是用revert还是reset,看自己),然后将本地的版本用git push -f强推到远端。

在IDEA中可以在terminal中执行指令:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/334411.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

self-attention机制详解

目前,对于我们的network,给定的input大都是一个向量: 但是对于更复杂的情况,我们的input是a set of vec: 举例: nlp中的句子,对于每个word都是一个word embedding: 图学习中每个节点有一个e…

怎么申请便宜的IP证书

IP证书是数字证书的一种,现在大多数数字证书都是针对有域名地址的网站,而IP证书是为只有公网IP地址的网站提供的安全加密手段之一。随着互联网的蓬勃发展,越来越多的只有公网IP地址的网站想要创建一个安全的上网环境,防止数据被窃…

R语言快速学习笔记

1、R 语言赋值使用的是左箭头 <- 符号。 2、变量名可以 . 号开头&#xff0c;但是要注意 . 号开头后面不能跟着数字。 3、定义函数&#xff1a;使用 function 关键字&#xff0c;形式&#xff1a; function_name <- function(arg_1, arg_2, ...) {# 函数体# 执行的代码块…

自动化测试用例设计粒度

自动化测试用例的粒度指的是测试用例的细致程度&#xff0c;即每个测试用例检查的功能点的数量和范围。 通常&#xff0c;根据测试用例的粒度&#xff0c;可以被分为3种不同的层次&#xff0c;从更低层次的细粒度到更高层次的粗粒度。 第一种&#xff1a;单元测试 - 细粒度 …

Java实现基于GDAL将单波段影像转为三波段影像-唯一值渲染

在处理遥感影像的渲染时&#xff0c;经常需要处理单波段影像。单波段影像没有任何颜色&#xff0c;只有一个波段的值。渲染时只能采用色带拉伸、离散颜色、唯一值渲染这几种方式。直接将单波段影像转成三波段的影像&#xff0c;并将三个波段转为颜色对应的rgb值&#xff0c;这样…

贝塞尔曲线

贝塞尔曲线&#xff08;Bzier curve&#xff09;是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线&#xff0c;贝兹曲线由线段与节点组成&#xff0c;节点是可拖动的支点&#xff0c;线段像可伸缩的皮筋&#xff0c;我们在绘图工具上看到的钢笔工具…

网络安全B模块(笔记详解)- Web渗透测试

Web渗透测试 1.通过渗透机Kali1.0对服务器场景PYsystem20192进行Web渗透测试(使用工具w3af的对目标Web服务器进行审计),在w3af的命令行界面下,使用命令列出所有用于审计的插件,将该操作使用的命令作为Flag值提交; 进入kali命令控制台中使用命令w3af_console进入w3af命令…

经验分享:知识库系统这样搭建轻松又高效

我们工作中遇到过这样的情况吗&#xff1f;找不到组织结构图&#xff0c;找不到某个报告模板&#xff0c;找不到工作流程说明… 还或者看到同事忙绿在重复劳动&#xff0c;却没办法高效地共享你的经验和知识&#xff1f;这些都表明你的公司可能正急需一个知识库系统。 知识库系…

springCould中的Config-从小白开始【10 】

目录 &#x1f32d;1.spring cloud Config是什么&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️ &#x1f953;2.能干什么&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️ &am…

【算法Hot100系列】有效的数独

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

【Scala】——流程控制

1 if-else 分支控制 让程序有选择的的执行&#xff0c;分支控制有三种&#xff1a;单分支、双分支、多分支 1.1单分支 if (条件表达式) {执行代码块 }1.2 双分支 if (条件表达式) {执行代码块 1 } else {执行代码块 2 }1.3 多分支 if (条件表达式1) {执行代码块 1 } else …

【C/C++】轻量级跨平台 开源串口库 CSerialPort

文章目录 1、简介2、支持的平台3、已经支持的功能4、Linux下使用5、使用vcpkg安装CSerialPort6、交叉编译7、效果图8、基于CSerialPort的应用8.1、CommMaster通信大师8.2、CommLite串口调试器 1、简介 Qt 的QSerialPort 已经是跨平台的解决方案&#xff0c;但Qt开发后端需要 Q…