git --- 回滚 restore, reset, revert

news2025/1/11 5:44:01

git --- 回滚 restore, reset, revert

  • git revert
  • git restore
  • git reset
    • git reset --soft
    • git reset --mixed
    • git reset -- hard

git revert

  • git revert 是用于“反做”某一个版本,以达到撤销该版本的修改的目的
  • 也就是git revert会生成一个新的commit, 而这个commit需要回滚的版本的内容是一样的
  • 如下, 比如版本三的commit有问题, 需要进行版本回退, 则执行 git revert 版本二 这个命令, git会生成版本四, 而版本四的内容和版本二是一样的
    在这里插入图片描述

Example

  • 目前有一个greeting.txt文件, git 记录如图
    在这里插入图片描述
  • 使用revert 恢复到最近一个commit之前的样子(commit 0343dc3)
    在这里插入图片描述
  • 查看git 记录以及greeting.txt的内容
    在这里插入图片描述
  • 注意: 如果要恢复到几个版本以前的状态, 尽量一个一个恢复, 避免冲突
  • 比如要恢复到 fbc9245 之前的状态, 则先revert 020cf2e --> revert 0343dc3 --> reevrt 2d73d74 ----> revert fbc9245

git restore

  • git restore有两种用法
  • 如果文件在工作区, 还没有被add进缓存区, 则git restore会直接丢弃目前工作区的更改
  • 如果文件在缓存区, 则需要使用 git restore --staged 将文件从缓存区移动回工作区

Example

git restore -- staged
  • 现在有一个更改, 已经被加入进缓存区
  • 使用 git restore --staged bar.txt 将文件移出缓存区, 放进工作区

在这里插入图片描述

git restore
  • 使用 git restore 将工作区的代码丢弃, 恢复原状
    在这里插入图片描述

Example: 恢复被删除的文件
在这里插入图片描述

git reset

git reset --soft

  • 仅仅移动当前 Head 指针,不会改变工作区和暂存区的内容
  • 之前commit的内容, 包括新增的文件,会被放进暂存区 (未commit)

Example:

  • 现在工作区 有一个修改, 暂存区有一个修改
    在这里插入图片描述
  • git 记录如下
    在这里插入图片描述
  • 执行 git reset --soft HEAD~1 表示恢复到HEAD指针上一个版本
  • 暂存区和工作区的文件不会被改动, 仅仅是HEAD指针被移动了 而之前的commit (新加10.txt) 全部会被放进缓存区
    在这里插入图片描述
    在这里插入图片描述
  • 注意此时的commit 10不会被丢弃,依然存在
    在这里插入图片描述
  • 如果在工作区或者缓存区的文件就是上次修改的文件,则会合并内容
  • 10.txt 从modified变为 new file,但是内容没有被丢弃
    在这里插入图片描述
    在这里插入图片描述

git reset --mixed

  • 移动当前 Head 指针
  • 之前commit的内容会被放进工作区
  • 目前缓存区的内容也会被放进工作区
  • 新增的文件会变为untracked状态(也就是放进工作区)

Example

  • 下面是mixed reset之前的状态
    在这里插入图片描述
  • 执行 git reset --mixed HEAD~1
  • 原来在缓存区的 1.txt会被放进工作区,而原来的新文件10.txt会被变为untracked状态(放进工作区)
  • 之前的commit内容 新文件 9.txt 也被直接变为untracked状态 (放进工作区)

在这里插入图片描述

git reset – hard

  • 将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交,当前 HEAD 指针、工作区和暂存区内容全部改变
  • 原有文件内容的变更 :修改内容丢失(修改的代码不会变成未add的状态)
  • 目录结构的变更(增加或者删除文件):新增文件丢失、删除的文件相当于没删

Example

  • 下面是hard reset之前的状态
    在这里插入图片描述
  • 执行 git reset --hard HEAD~1 之后,工作区和暂存区全部被清空,回到上一个commit
    在这里插入图片描述
  • 注意, commit 10不会被删除,依然存在
    在这里插入图片描述

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

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

相关文章

Spring Cloud Alibaba快速整合OpenFeign

文章目录 spring cloud alibaba 整合OpenFeign整合流程1.导入依赖2. 编写调用接口2.1 service(这里写的是clients)2.2 controller 3.设置其最大链接时间3.1 配置文件3.2 client3.3 接口3.4 被访问的controller spring cloud alibaba 整合OpenFeign Fore…

C++之lseek64应用总结(二百三十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

基于STM32的宠物托运智能控制系统的设计(第十七届研电赛)

一、功能介绍 使用STM32作为主控设备,通过DHT11温湿度传感器、多合一空气质量检测传感器以及压力传感器对宠物的托运环境中的温湿度、二氧化碳浓度和食物与水的重量进行采集,将采集到的信息在本地LCD显示屏上显示,同时,使用4G模块…

IO模型学习

一、IO读写的基本原理 一个原则:操作系统将内存划分为两部分:一个是内核空间,一个是用户空间。在linux操作系统中,内核模块运行在内核空间,相应的进程处在内核态;用户程序运行在用户态,对应的进…

Vis.js教程(一):基础教程

1、Vis.js是什么 一个动态的、基于浏览器的可视化库。 该库的设计易于使用,能够处理大量动态数据,并能够对数据进行操作和交互。 该库由 DataSet、Timeline、Network、Graph2d 和 Graph3d 组件组成。 Vis.js官网:https://visjs.org/ github…

MS COCO数据集介绍以及pycocotools使用

MS COCO数据集介绍以及pycocotools使用 1、MS COCO数据集简介2、MS COCO数据集目录结构3、 MS COCO标注文件格式3.1 使用Python的json库查看3.2 使用官方cocoAPI查看 4、目标检测验证任务mAP 1、MS COCO数据集简介 2、MS COCO数据集目录结构 ├── coco2017: 数据集根目录├─…

Elasticsearch(Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合)

Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合 一、Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索。 1、Elasticsearch 搜索入门 …

<十二>objectARX开发:Arx注册命令类型的含义以及颜色索引对应RGB值

1、注册命令类型 我们经常在acrxEntryPoint.cpp中看到注册命令如下: 那么各个宏定义代表什么意思呢? 主标识:(常用的) ACRX_CMD_MODAL: 在别的命令执行的时候该命令不会在其中执行。ACRX_CMD_TRANSPARENT: 命令可以再其它命令中执行,但在该标志下ads_sssetfirst()不能使…

Python实现猎人猎物优化算法(HPO)优化LightGBM回归模型(LGBMRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

MySQL学习笔记13

DISTINCT数据去重: 案例:获取tb_student学生表学员年龄的分布情况。 mysql> select * from tb_student; ------------------------------------------------- | id | name | age | gender | address | --------------------------…

Go内置函数make和new的区别?

首先纠正一下make 和 new 是内置函数,不是关键字。 变量初始化,一般分为2步,变量声明变量内存分配,var 关键字就是用来声明变量的,new和make 函数主要是用来分配内存的。 var 声明值类型的变量时,系统会默…

[数据结构】栈和队列

目录 1.栈 1.1概念 1.2 栈的使用 1.3.栈的模拟实现 2.队列 2.1概念 2.2队列的使用 2.3队列的模拟实现 2.4 循环队列 2.5双端队列 1.栈 1.1概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一…

PPT系统化学习 - 第1天

文章目录 更改PPT主题更改最大撤回次数自动保存禁止PPT压缩图片字体嵌入PPTPPT导出为PDFPPT导出为图片PPT导出为图片型幻灯片PPT导出成视频添加参考线设置默认字体设置默认形状建立模板、保存模板、使用模板建立模板保存模板使用模板 更改PPT主题 更改PPT的主题: 夜…

如何进行销售漏斗管理?

本文将为大家讲解:如何进行销售漏斗管理? 销售漏斗管理是现代销售管理的核心概念之一。它将销售过程分解为一系列阶段,从而帮助销售团队更有效地跟踪和管理潜在客户。本文将深入探讨销售漏斗管理的方法,并结合简道云CRM的实际应用…

【深度学习推荐系统 工程篇】三、浅析FastTransFormer看 GPU推理优化 思路

前言 在搜索/推荐场景中(一般是CTR/CVR预估)Serving的模型一般是稀疏参数占比比较大,工程落地方面会遇到两方面的困难: 稀疏参数的存储/IO网络结构的优化 对于稀疏参数的存储/IO,在上一篇【深度学习推荐系统 工程篇…

MySQL查询(基础到高级)

目录 一、单表查询: 1.基本查询: 1.1 查询多个字段: 1.2 去除重复记录: 2. 条件查询: 2.1 语法 2.2 条件分类: 比较运算符: between..and..使用示例: ​编辑 in(..) 使用示例&…

InfiniTAM v3中localVBA的使用原理

注意:以下是我对InfiniTAM v3代码的理解 初始化:假设预先设定的block数量长度为10,localVBA初始化后如下图 voxelBlocks的内存已经分配,但都是空的allocationList被初始化为allocationList[i]i,表示任意访问allocatio…

【数据开发】数据全栈知识架构,数据(平台、开发、管理、分析)

文章目录 一、数据全栈知识架构1、数据方法(思维,统计学,实践,北极星)2、数据工具:数据仓库3、数据规范 二、数据分析工具1、大数据平台2、数据开发:入库计算(重点)3、数…

WP篇 某网杯WEBAWD踩坑

某网杯 事件回顾赛题环境 坑木马访问JSP显示空白Ubuntu与Mysql问题框架选择idea 事件回顾 虽然没有参与本次AWD,但是看到另外一只队伍down下来的文件,我还是忍不住心动了,于是决定复现一番,因为某些原因,详细的wp和复…

c#:System.Text.Json 的使用三(从Newtonsoft迁移)

环境: .net 6.0vs2022 系列篇: 《c#:System.Text.Json 的使用一》 《c#:System.Text.Json 的使用二》 《c#:System.Text.Json 的使用三(从Newtonsoft迁移)》 参考: 《MSDN: 从 Newt…