详解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.mzph.cn/news/96466.shtml

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

相关文章

开源即时通讯IM框架 MobileIMSDK v6.4 发布

一、更新内容简介 本次更新为次要版本更新,进行了若干优化(更新历史详见:码云 Release Notes、Github Release Notes)。MobileIMSDK 可能是市面上唯一同时支持 UDPTCPWebSocket 三种协议的同类开源IM框架。 二、MobileIMSDK简介…

css选择器及其权重

在CSS中,选择器是用来选择HTML元素并应用样式规则的一种方式。每个选择器都有一个与之相关联的权重,用来确定当多个规则应用到同一个元素时,哪个规则会优先生效。权重是由选择器的类型和组合方式来决定的。下面是一些常见的CSS选择器及其权重…

基于风驱动优化的BP神经网络(分类应用) - 附代码

基于风驱动优化的BP神经网络(分类应用) - 附代码 文章目录 基于风驱动优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.风驱动优化BP神经网络3.1 BP神经网络参数设置3.2 风驱动算法应用 4.测试结果&#x…

递归

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 目录 👉🏻汉诺塔 👉&…

redis 雪崩,穿透,击穿及解决方案

一、缓存雪崩: 1. 原因: 缓存雪崩是指在我们设置缓存时大量采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。 2. 解决方案: 将失效时间分散,通过生成随机数使得key的过期时间…

Redis 分布式锁

Redis分布式锁 - 胤凯 (oyto.github.io) 分布式锁 1、什么是分布式锁? 在分布式场景下的锁,比如在多台不同机器上的进程,去竞争同一项资源,就是分布式锁。 2、分布式锁有哪些特性? 互斥性:只能让一个竞…

java 将字符串转为Base64格式与将Base64内容解析出来

首先要引入依赖包 import java.nio.charset.StandardCharsets; import java.util.Base64;然后对应一下两个代码 将字符串转为Base64 Base64.getEncoder().encodeToString(需要转换的字符串.getBytes(StandardCharsets.UTF_8));将 Base64 字符串解析成原来的内容 byte[] deco…

每日一题 901. 股票价格跨度(中等,单调栈)

理解题目,对于第 i 天,要求的是前 i - 1 天所满足条件的跨度 思路: 暴力搜索的方式是,对于每一个第 i 天都遍历搜索 i - 1, i - 2,…,直到第 j 天大于当前价格优化,考虑哪里进行了…

SQL的CASE WHEN函数、CAST函数、CONVERT() 函数、COALESCE()函数、DATEDIFF()函数

一、CASE WHEN简单使用 SELECT CASE WHEN age > 18 AND age < 25 THEN 18-25WHEN age > 25 AND age < 35 THEN 25-35WHEN age > 35 AND age < 45 THEN 36-45ELSE 45END AS age_groupFROM peopleGROUP BY age_group;二、CASE WHEN语句与聚合函数一起使用 SE…

论文总结:3D Talking Face With Personalized Pose Dynamics

论文解决的问题:大多数现有的3D人脸生成方法只能生成静态头部姿势的3D面部,只有少数几篇文章关注头部姿势的生成,但这些文章也忽略了个体属性。 解决方法:框架由两个独立模块组成:PoseGAN和PGFace。给定输入音频,PoseGAN首先为3D头部生成一个头部姿势序列,然后PGFace利用…

blender光照系统设置

0&#xff09;Viewport Shading设置里面的Lighting下面的参数&#xff1a; Scene Lights,Scene World - Scene Lights是指在渲染模式下是否使用场景中的灯光对象来照亮物体。 - Scene World是指在渲染模式下是否使用场景中的世界设置来作为背景和环境光。如果关闭该选项&#…

数据库基础知识

数据库 什么是数据库, 数据库管理系统, 数据库系统, 数据库管理员? 数据库 : 数据库(DataBase 简称 DB)就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。数据库管理系统 : 数据库管理系统(Database Management System 简称 DBMS)是一种操纵和管理数据库的大…

Redis Cluster Gossip Protocol: FAIL, UPDATE

返回目录 FAIL的发送 过程 构建消息头把处于FAIL状态的node的ID填入消息的数据部分广播消息 遍历cluster节点字典:跳过还没有创建连接的node跳过myself和处于handshake的node给node发送FAIL消息FAIL的接收处理 过程 第1 ~ 3步是涵盖所有类型的消息&#xff0c;详细请参考…

RPA自动化全平台文章同步助手

在当今文案自媒体时代&#xff0c;我们通常在各大平台都拥有账号&#xff0c;需要同步发布文章。然而&#xff0c;这个过程常常让人感到非常繁琐&#xff0c;因为我们需要将文章复制粘贴到不同平台上。但是&#xff0c;现在我们可以借助RPA&#xff08;Robotic Process Automat…

TL-ER3220G端口映射设置

1、打开IE浏览器或其它浏览器&#xff0c;在地址栏输入192.168.1.1登录路由器的Web管理界面&#xff1b; 2、打开后弹出密码输入框&#xff0c;输入路由器的用户名和密码&#xff0c;出厂默认值为admin/admin&#xff0c;成功登录后将看到路由器的系统状态信息&#xff1b; 3、…

java技术文档--多线程(1)--核心学习大纲--首页

阿丹&#xff1a; 对于java来说最核心也是一个java程序员最大竞争力的就是多线程的开发。希望我的这一套多线程学习的体系可以帮助大家整理以及清楚明白的使用多线程&#xff0c;并了解多线程的底层。其实不少同学在提到多线程的时候一下就头大了。没关系阿丹将多线程这里用深…

Setup Factory 使用及删除文件夹

前一段时间&#xff0c;使用Setup Factory 进行打包&#xff0c;在使用过程中&#xff0c;遇到了很多问题&#xff0c;在网上找了很多资料&#xff0c;安装包制作工具 SetupFactory 详解_setup factory-CSDN博客&#xff0c;这篇文章介绍的很详细&#xff0c;可以用做参考。 关…

Python中如何获取各种目录路径

最近总是遇到各种路径问题&#xff0c;学习总结一下 文章目录 1. 获取各种目录的方法&#xff1a;2. Python测试脚本&#xff1a; 1. 获取各种目录的方法&#xff1a; 当前工作目录&#xff1a;这是你从哪里运行了你的Python脚本。 current_directory os.getcwd()脚本所在目录…

学习搜狗的workflow,MacBook上如何编译

官网说可以在MacBook上也可以运行&#xff0c;但是编译的时候却有找不到openssl的错误&#xff1a; 看其他博客也有类似的错误&#xff0c;按照类似的思路去解决 问题原因和解决办法 cmake编译的时候&#xff0c;没有找到openssl的头文件&#xff0c;需要设置cmake编译环境下…

解决docker开启MySQL的binlog无法成功。docker内部报错:mysql: [ERROR] unknown variable

1. 报错信息 2. 操作流程 整个流程是这样的&#xff1a; 我愉快的输入docker ps&#xff0c;查看MySQL的docker 容器id 执行指令docker exec -it 8a \bin\bash进入容器内部执行vim /etc/my.cnf&#xff0c;打开配置文件按照网上说的&#xff0c;添加如下配置信息退出docker容…