【Git的基本操作】版本回退 | 撤销修改的三种情况 | 删除文件

目录

5.版本回退

5.1选项hard&后悔药

5.2后悔药&commit id

5.3版本回退的原理

6.撤销修改

6.1情况一

6.2情况二

6.3情况三

​7.删除文件


Git重要能力之一马,版本回退功能。Git是版本控制系统,能够管理文件历史版本。本篇以ReadMe文件为例。

  • 版本回退 是回到某一次提交或者回退操作的时候版本 (用提交记录的commit id即可)
  • 版本撤销 是直接定位某个文件需要撤销的内容。

5.版本回退

版本回退命令:git reset

版本回退命令本质是:将版本库里面的内容回退的。

git reset也存在多个选项。

git reset 命令语法格式为:

git reset [--soft | --mixed | --hard] [HEAD]  你想要回退到的版本的commit id(提交记录)

  • Git reset 只是回退版本库(本地仓库)中的内容。关于工作区和暂存区的内容回退,需要git reset --选项 后面的选项来决定。
  • 版本回退是回退一次 add或者commit 操作,不是一个仅仅某个文件的版本。(这次提交的所有文件的版本都不算)
  • --soft:只回退版本库中的内容
  • --mixed:会回退版本库和暂存区的内容(默认选项)

  • --hard:会回退版本库和暂存区和工作区的内容。(注意❗hard要慎用,一旦使用hard选项,版本库/暂存区/工作区所有的内容都回退到上一个版本。如果文件少,代码少,可以用commit id找回来;如果文件过大,操作频繁,很可能导致丢失一些新开放的代码

  • git log --pretty=oneline 或者 git log 用来查看 每次提交的记录

  • git reset 除了以上的版本回退的操作,还可以将文件回退到当前版本HEAD

  • HEAD当前版本意思就是工作区和暂存区的内容版本和版本库中一致。(看选项)


背景☞回退操作

ReadMe文件原本只有hello linux

ReadMe文件修改之后增加了一行aaaaaaaaaa

git reset [--soft | --mixed | --hard] [HEAD]
git reset --soft //仅工作区的内容
git reset --mixed //是工作区和暂存区的内容——默认选项
git reset --hard //是工作区和暂存区和版本库的内容——慎用
git reset HRAD //(HEAD就是表示回退到当前版本,不需要选项,因为选项是默认选项)//就是工作区和暂存区的内容一起回到版本库内容一致
git reset HRAD^  //回退到上一个版本
git reset HRAD^^  //回退到上上个版本
//后面都要接commit id或者文件名

5.1选项hard&后悔药

git reset --hard 7f0ea7a49fc354e7f07696609b0c9e8ec261d0b8

用户此刻后悔了,能不能撤销刚刚的操作。

当然可以,刚刚已经答应了最新的commit id,我们知道我们原来版本(回退之前)的commit id,所以还可以回退到原来的文件版本。因为我们可以找到commit id,且并没有将modify的ReadMe的commit id清除掉.

5.2后悔药&commit id

 git reflog :用来记录每一次的提交命令

每一次提交或者是回退操作都有各自操作对应commit id

我们照样也可以使用一部分的commit id来回退

以上的前提是我们能找到commit id,在开发的过程中,我们会进行很多次的git操作,会把commit id冲刷掉,找不到。

5.3版本回退的原理

版本回退的速度是非常快的,版本回退的速度为什么快呢❓

只需要修改的master的指向(指针)

6.撤销修改

git checkout  -- 需要撤销的文件名

  • 将工作区的文件回到醉经一次的add或者commit时的一个状态
  • 注意:必须加上-- 这两根横线,不然就是另外一层含义

背景☞撤销操作

版本12:hello linux aaaaaaaaaaaa

版本3:xxxxx code(需要撤销这行代码)

6.1情况一

情况一:只在工作区的ReadMe文件修改了内容

解决办法:

  • 手动撤销——不推荐,容易出错    
  • git checkout --[filename] --推荐

6.2情况二

情况二:在工作区的ReadMe文件修改了内容并且add到了暂存区。

解决办法:

  • 回退命令 git reset HEAD (默认选项--mixed)暂存区回退到当前版本,回到撤销情况一   
  • 使用git checkout 撤销命令。或者是直接git reset --hard HEAD 一步到位

6.3情况三

情况三:在工作区的ReadMe文件修改了内容并且add到了暂存区和commit提交到了版本库中。

  • 前提时:commit 之后没有push
  • 撤销的目的是 不影响远程仓库的代码
  • 解释:我们使用操作只能截止到commit操作,而不能使用Push操作。有个这个大的前提,我们的撤销才算有效。含义:将来在公司运行一些代码,是运行的/跑的 远程仓库的代码。(所以我们主要是围绕远程仓库来玩)撤销主要就是撤销我们本地一些错误的,不好的代码。修改完才能推送到远程仓库。
  • 远程仓库:暂时不用理解。
  • 工作区——add——>暂存区——>commit——>版本库——>Push——>远程仓库
  • 因为上面两种撤销情况我们都不需要考虑,都没有commit到版本库中,不可能到远程仓库。这种情况,版本库中有了,我们不知道,远程仓库里是否被Push了。所以前提条件就是,远程仓库没有被Push,这个撤销操作才算有效。

解决办法:

  • 前提条件:commit 之后没有push    
  • 使用git reset --hard commit id
  • 一步一步回到撤销情况二 撤销情况一 再用git checkout

7.删除文件

删除一个已经更新到版本库中的文件(两种做法) 

//做法1
rm file
git add file
git commit -m "delete file"//做法2
git rm file //把工作区和暂存区的文件一步到位删除
git commit -m "delete file"

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

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

相关文章

Web前端开发

1. 介绍 本文将覆盖Web前端开发的方方面面,包括HTML、CSS、JavaScript三大基础知识,vue3框架以及项目实战,帮助读者从零开始掌握前端开发。 2. Web前端开发基础 2.1 HTML5 2.1.1 什么是HTML5 HTML(HyperText Markup Language…

Paddle 打包部署

PaddleOCR 打包部署exe 心酸历程 PaddleOCR部署exe模式PaddleOCR安装到本地(稍后有时间再写)PaddleOCR打包过程异常问题记录!!!!No such file or directory: D:\\py_project\\paddleOCR\\dist\\paddleOCR\\_internal\\paddleocr\\…

Spring中的适配器模式和策略模式

1. 适配器模式的应用 1.1适配器模式(Adapter Pattern)的原始定义是:将一个类的接口转换为客户期望的另一个接口,适配器可以让不兼容的两个类一起协同工作。 1.2 AOP中的适配器模式 在Spring的AOP中,使用Advice&#…

使用Elasticsearch Python SDK 查询Easysearch

随着数据分析需求的不断增长,能够高效地查询和分析大数据集变得越来越重要。Elasticsearch作为一种强大的分布式搜索和分析引擎,被广泛应用于各种场景。Easyearch 支持原生 Elasticsearch 的 DSL 查询语法,确保原业务代码无需调整即可无缝迁移…

记录些MySQL题集(1)

Innodb 是如何实现事务的? InnoDB是MySQL数据库的一个存储引擎,它支持事务处理。事务处理是数据库管理系统执行过程中的一个逻辑单位,由一个或多个SQL语句组成,这些语句要么全部执行,要么全部不执行,是一个…

idea修改全局配置、idea中用aliyun的脚手架,解决配置文件中文乱码

idea修改全局配置 idea中用aliyun的脚手架,创建springBoot项目 解决配置文件中文乱码

C判断一个点在三角形上

背景 鼠标操作时,经常要判断是否命中显示控件,特开发此算法快速判断。 原理 三角形三等分点定理是指在任意三角形ABC中,可以找到三个点D、E和F,使得线段AD、BE和CF均等分三角形ABC。 这意味着三个等分点分别位于三个边界上&…

Maven学习笔记——如何在pom.xml中通过坐标为项目导入jar包

注意:我们只导入了一个jar包坐标,但右边项目中确多出来了好几个jar包,这是因为我们导入的该jar包所依赖其他jar包,maven自动帮我们导入了进来

【网络运维的重要性】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【C++进阶学习】第七弹——AVL树——树形结构存储数据的经典模块

二叉搜索树:【C进阶学习】第五弹——二叉搜索树——二叉树进阶及set和map的铺垫-CSDN博客 目录 一、AVL树的概念 二、AVL树的原理与实现 AVL树的节点 AVL树的插入 AVL树的旋转 AVL树的打印 AVL树的检查 三、实现AVL树的完整代码 四、总结 前言&#xff1a…

[Vulnhub] Simple CuteNews-CMS+Kernel权限提升

信息收集 IP AddressOpening Ports192.168.8.104TCP:80 $ nmap -p- 192.168.8.104 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.7 ((Ubuntu)) |_http-title: Please Login / CuteNews |_http-server-header: Apache/2.4.7…

a-table 表格 根据序号展示不同的颜色

、 代码如下: :row-class-name"(_record, index) > (index % 2 1 ? table-striped : null)" 样式 .table-striped { background-color: #F6F9FA !important; } .table-striped .ant-table-cell-fix-right { background-color: #F6F9FA !important; …

第一百六十五节 Java IO教程 - Java标准输入/输出/错误流

Java IO教程 - Java标准输入/输出/错误流 我们可以使用System.out和System.err对象引用,只要我们可以使用OutputStream对象。 我们可以使用System.in对象,只要我们可以使用InputStream对象。 System类提供了三个静态设置器方法setOut(),set…

flutter 列表下拉框加搜索

1.使用控件搜索加下拉框dropdown_search: ^0.4.9和获取中文拼音lpinyin: ^1.1.1 2.加入中文查询和首字查询 在当中找到相应的packages,再在SelectDialog.dart当中加入引入拼音搜索 import package:lpinyin/lpinyin.dart; 更改匹配方法manageItemsByFilter使其可…

第一个AI应用(文心智能体平台)

第一个AI应用(文心智能体平台) 官网:https://agents.baidu.com/ 平台简介:https://agents.baidu.com/docs/ 部分内容由AI生成,注意甄别 一、什么是AI应用及其功能 AI应用,即人工智能应用,是利用…

Instagram品牌账号运营:从零到一的全攻略

Instagram是一个分享日常生活的平台,同时也是品牌与消费者建立联系和进行互动的场所。拥有超过10亿月活跃用户的Instagram,为品牌提供了与消费者进行深入沟通和建立联系的绝佳机会。本文将为您揭示如何从零开始,一步步构建并优化您的Instagra…

银河麒麟高级服务器操作系统V10加固操作指南

1:检查系统openssh安全配置: 2:检查是否设置口令过期前警告天数: 3:检查账户认证失败次数限制: 修改/etc/pam.d/system-auth文件中deny的参数即可 4:检查是否配置SSH方式账户认证失败次数限制:

CSS【详解】边框 border,边框-圆角 border-radius,边框-填充 border-image,轮廓 outline

边框 border border 是以下三种边框样式的简写: border-width 边框宽度 —— 数值 px(像素),thin(细),medium(中等),thick(粗)border-style 边框线型 —— none【默认值…

数据结构(4.4)——求next数组

next数组的作用:当模式串的第j个字符失配时,从模式串的第next[j]的继续往后匹配 求模式串的next数组(手算) next[1] 任何模式串都一样,第一个字符不匹配时,只能匹配下一个子串,因此,往后,next[1]都无脑写…

51单片机6(P0P1P2P3结构框架图)

一、GPIO结构框架图与工作原理 1、接下来我们介绍一下这个GPIO结构框图和工作原理,我们使用51单片机的GPIO分为了P0,P1,P2,P3这四组端口,下面我们就分别来介绍这四组端口它的一个内部结构,只有了解了内部的…