当前位置: 首页 > news >正文

关于IDEA中Git版本回滚整理

Git分区理解

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

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

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

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

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

未commit时,进行回滚

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

1、新增的文件

2、修改的文件

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

已经commit暂未push,进行回滚

undo commit

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


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

你会看到多了一个变更列表:


变更列表有什么作用?

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

reset

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

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

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

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

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

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

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

已commit&push,进行回滚

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

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

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

写在最后

Git操作是开发人员最基础的操作,但是大多数人只懂得普通的操作,像回滚这一类总是以为不难,但是出问题的时候又去百度,这个还是扎扎实实掌握一下。有益无害吧,不然就算你的编码水平还可以,一般也会被认为很菜鸡,那就不太舒服了。

好了,今天的内容就分享到这里,觉得还算有用的铁子们帮忙一键三连。另外,推荐一个新号"韭盾专栏",主要用于整理一些上市公司的基本面的,人活资本市场中,多看点实在的东西总是有好处的,至少侃侃而谈的时候你可能在无形中给人留下与众不同的印象。

相关文章:

  • 爬虫工作量由小到大的思维转变---<第三十四章 Scrapy 的部署scrapyd+Gerapy>
  • Docker 数据持久化的三种方式
  • JS的this机制
  • 【面试题】写一个睡眠函数
  • leetcode-2.两数相加
  • 【数据倾斜笔记】
  • Pandas中concat的用法
  • JavaScript:正则表达式
  • 【线性代数】决定张成空间的最少向量线性无关吗?
  • uniapp+echarts开发APP版本教程
  • 5.2 显示窗口的内容(二)
  • JUnit 5和Mockito单元测试
  • css 用多个阴影做出光斑投影的效果 box-shadow
  • 学习笔记-MyBatis的工作原理。
  • 求解拍频的信号特征
  • Android交互
  • AngularJS指令开发(1)——参数详解
  • CAP 一致性协议及应用解析
  • django开发-定时任务的使用
  • extjs4学习之配置
  • Java 多线程编程之:notify 和 wait 用法
  • python_bomb----数据类型总结
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • REST架构的思考
  • Windows Containers 大冒险: 容器网络
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 三栏布局总结
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 物联网链路协议
  • 7行Python代码的人脸识别
  • hi-nginx-1.3.4编译安装
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • !$boo在php中什么意思,php前戏
  • $(function(){})与(function($){....})(jQuery)的区别
  • (1)bark-ml
  • (2)(2.10) LTM telemetry
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (c语言)strcpy函数用法
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (一一四)第九章编程练习
  • (转载)Google Chrome调试JS
  • .net core 控制台应用程序读取配置文件app.config
  • .net core 连接数据库,通过数据库生成Modell
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net MySql
  • .NET简谈设计模式之(单件模式)
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .net实现客户区延伸至至非客户区
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • [100天算法】-不同路径 III(day 73)