Git 基本操作(二)

目录

撤销修改操作

情况一

情况二         

情况三 

删除文件

升级git 


撤销修改操作

        在日常编码过程中,有些时候,我们可能写着写着发现目前的版本的代码越写越挫,越不符合标准,想让我们当前的文件去恢复到上一次提交的版本,撤销当前对文件的修改,其实就是恢复当前工作区的文件到上一个版本,有没有什么方法呢?

        方法是有的,但是撤销修改要分为三种情况去讨论。

情况一

        当前的修改仅仅是修改了工作区的文件,但是没有进行 git add 操作和 git commit 操作,也就是没有将文件添加到暂存区和版本库中,此时想要撤销当前工作区文件的修改。

        此时有两种方法进行撤销修改。

  1. 使用 git diff 指令,查看当前修改的文件与上一次提交的文件的差异,根据差异对原有的文件进行相关差异代码的删除。这种方法作者不推荐,因为不能保证删除的过程中一定不会出错。
  2. 使用 git checkout -- [filename] 指令进行文件的撤销修改,将文件恢复到最近一次 add 或者 commit 的版本。推荐使用这种方法。

        来吧展示。

        我们给 ReadMe 文件添加了一行 "hello China!!!" 数据,现在我们要撤销当前的修改操作(这里要注意,添加数据,删除数据,修改数据其实就是是对文件修改的具体体现)。

        

        使用 git checkout -- ReadMe 指令之后,确实完成了对工作区文件修改的撤销。

情况二         

        对工作区中的文件进行了修改,并且已经进行了 git add 操作,将修改的文件添加到了暂存区中,此时想要撤销当前工作区和暂存区文件的修改。

        此时可以使用以下两种方法进行修改。

  1. 使用 git reset --mixed HEAD [filename] 指令,可以将 版本库 和 暂存区 中的文件恢复到当前提交版本,将暂存区的文件恢复到到当前提交版本之后,此时的情况就变成了情况一,所以根据情况一使用 git checkout 指令进行恢复。
  2. 使用 git reset --hard HEAD指令,可以将 工作区 和 版本库 和 暂存区 中的文件恢复到当前提交版本。

        方法一展示。

        我们先对 ReadMe 文件做了相同的修改,添加了对应的数据,然后将工作区中的文件进行了git add 操作,然后再使用 git reset HEAD 指令将暂存区和版本库的文件恢复到了当前提交版本,此时查看本地仓库的状态,发现是工作区中的问价未 git add 的状态,此时就变成了情况一。

        此时再使用情况一的方法,就能实现工作区中的文件的当前修改的撤销。

        此时已经成功完成了对工作区和暂存区文件的当前修改的撤销。

        方法二展示。

         直接使用 git reset --hard HEAD 指令,将当前的工作区,暂存区,版本库中的文件恢复到当前的提交版本。

        此时也完成了对工作区和暂存区文件修改的撤销。 

情况三 

        对工作区的文件修改之后,进行了 git add 操作,进行了 git commit 操作,已经将修改的文件添加到了暂存区和版本库中,此时想撤销对工作区和暂存区和版本库文件的修改。 

        方法如下。

        直接使用 git reset --hard HEAD^ 指令,进行所有文件的撤销,其实也就是上期的所有文件的回退操作。 HEAD 表示当前提交版本,HEAD^ 表示上一次提交的版本,其它同理。

        展示如下。

        先对 ReadMe 文件进行修改操作,然后进行 git add 和 git commit 操作。

        然后使用 git reset --hard HEAD^ 指令将工作区和暂存区和版本库中的所有文件恢复到上一版本。 

        此时就完成了工作区和暂存区和版本库文件的撤销修改操作。  

删除文件

        有时候我们发现我们创建的文件和提交的文件不符合要求,要将工作区和暂存区和版本库中对应的文件要删除,此时我们应该如何进行删除呢?
        有两种方法。

  1. 先使用 rm 指令删除掉对应工作区的文件之后,然后使用 git add 和 git commit 指令,这样最终就删除了三个模块中对应的文件。
  2. 先使用 git rm [filename] 指令,然后再使用 git commit 指令,这样最终就删除了三个模块中对应的文件。

        由于我们使用的是 git 1.83 版本,第一种方法必须使用 git 2.0 及其以上版本。

升级git 

        所以要对 git 版本进行升级。 

        1.卸载掉旧版本。

sudo yum remove git -y

        使用 git --version 指令查看 git 版本。

        此时已经完成了旧版本的卸载。

        2.安装 git 升级所依赖的仓库。

sudo rpm -ivh http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-1.noarch.rpm

        3.安装新版本 git 工具。

sudo yum -y install git -y

        此时我们通过 git version 指令发现 git 工具新版本已经安装完毕。 

        方法一展示。

   创建 file1 文件,完成提交之后,将该文件在工作区和暂存区和版本库中都进行删除。 

        最终完成了 file1 文件在各个模块的删除操作。 

        方法二展示。

   创建 file1 文件,完成提交之后,将该文件在工作区和暂存区和版本库中都进行删除。 

        最终完成了对 file1 文件在各个模块的删除。 

        其实第二种方法其实就是对第一种方法的整合,第二种方法将第一种方法中的 rm 和 git add 操作进行了整合,所以当第二种方法 git rm 之后,可以直接进行 git commit 操作。

        以上便是本期的所有内容。

        本期内容到此结束^_^ 

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

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

相关文章

java使用CMU sphinx语音识别

java使用CMU sphinx语音识别 一、pom依赖1、依赖dependency2、配置仓库repository 二、下载中文资源包1、下载中文资源包(需要其他语言的选择对应的文件夹即可),中文选择Mandarin2、将下载后的文件放到项目中3、代码-识别wav语音文件4、代码-…

企业内训|智能驾驶与智能座舱技术——某汽车厂商

4月25日,东北某市,TsingtaoAI团队为某汽车厂商的智能驾驶业务和研发团队交付“智能驾驶与智能座舱技术”课程。本课程系统讲解智能汽车两大核心领域技术架构与实现路径。课程涵盖智能驾驶感知层(激光雷达/毫米波雷达/视觉融合)、决…

【数学建模国奖速成系列】优秀论文绘图复现代码(二)

文章目录 国奖论文绘图复现代码,可直接运行柱状图横向柱状图分组柱状图堆叠柱状图堆叠柱状图2三维柱状图完整复现代码 国奖论文绘图复现代码,可直接运行 数模比赛的绘图是非常重要得,这篇文章给大家分享我自己复现的国奖优秀论文的代码&…

GitLab CVE-2024-12444 安全漏洞解决方案

本文分享极狐GitLab 补丁版本 17.11.1, 17.10.5, 17.9.7 的详细内容。这几个版本包含重要的缺陷和安全修复代码,我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS,技术团队已经进行了升级,无需用户采取任…

随机微分方程(SDE):股票价格模型、利率模型的构建

随机微分方程(SDE):股票价格模型、利率模型的构建 一、随机微分方程(SDE)基础:从确定性到随机性的扩展 1. 定义与一般形式 随机微分方程(SDE)是包含布朗运动(随机项&am…

【MCP Node.js SDK 全栈进阶指南】高级篇(1):MCP多服务器协作架构

随着业务规模的不断扩大和系统复杂度的提升,单一服务器架构往往无法满足高并发、高可用性和弹性扩展的需求。在MCP生态系统中,多服务器协作架构成为构建大规模应用的必然选择。本文将深入探讨MCP TypeScript-SDK在多服务器环境下的部署、协作和管理,以及如何构建高可用、高性…

git 修改用户名和邮箱

在 Git 中修改用户名和邮箱地址是常见的任务,这可以确保你的提交记录使用正确的身份信息。你可以通过简单的命令来完成这一操作。 全局配置 修改全局用户名 要修改全局的用户名,请执行以下命令: git config --global user.name "New…

[算法学习]——通过RMQ与dfs序实现O(1)求LCA(含封装板子)

每周五篇博客:(3/5) 碎碎念 其实不是我想多水一篇博客,本来这篇是欧拉序的博客,结果dfs序也是可以O1求lca的,而且常数更优,结果就变成这样了。。。 前置知识 [算法学习]——dfs序 思想 分…

spark local模式

Spark Local 模式是一种在单台机器上运行 Spark 应用程序的模式,无需搭建分布式集群,适合开发调试、学习以及运行小规模数据处理任务。以下为你详细介绍该模式: 特点 简易性:无需额外配置分布式集群,在单机上就能快速…

用 RxSwift 实现 UITableView 的响应式绑定(超实用示例)

目录 前言 一、环境准备 1.安装 RxSwift 和 RxCocoa 2.导入模块 二、实现一个简单的UITableView 1.实现一个简单的 UITableView 1.实现步骤 1.我们声明一个ViewModel 2.ViewModel和UITableView 绑定 2.实现 UITableView 的代理方法 三、处理点击事件 前言 在 iOS 开发…

【C++】通过红黑树封装map和set

前言: 通过之前的学习,我们已经学会了红黑树和map、set。这次我们要实现自己的map和set,对,使用红黑树进行封装! 当然,红黑树内容这里就不在赘述,我们会复用红黑树的代码,所以先将…

非凸科技受邀出席AI SPARK活动,共探生成式AI驱动金融新生态

4月19日,由AI SPARK社区主办的“生成式AI创新与应用构建”主题沙龙在北京举行。活动聚焦生成式AI的技术突破与产业融合,围绕大模型优化、多模态应用、存内计算等前沿议题展开深度探讨。非凸科技受邀出席并发表主题演讲,深入解析金融垂直大模型…

【Java IO流】IO流详解

参考笔记:【Java基础-3】吃透Java IO:字节流、字符流、缓冲流_javaio-CSDN博客 目录 1.IO流简介 1.1 什么是IO流? 1.2 IO流的分类 1.3 字符流和字节流的其他区别 1.4 Java IO流体系图 2.字符编码详解 3. Java的char类型与 Unicode、U…

驱动开发系列56 - Linux Graphics QXL显卡驱动代码分析(三)显示模式设置

一:概述 如之前介绍,在qxl_pci_probe 中会调用 qxl_modeset_init 来初始化屏幕分辨率和刷新率,本文详细看下 qxl_modeset_init 的实现过程。即QXL设备的显示模式设置,是如何配置CRTC,Encoder,Connector 的以及创建和更新帧缓冲区的。 二:qxl_modeset_init 分析 in…

Vue3开发常见性能问题知多少

文章目录 1 常见性能优化瓶颈及原因1.1 响应式数据的过度使用1.2 虚拟 DOM 的频繁更新1.3 组件渲染的冗余1.4 大列表渲染的性能问题1.5 计算属性和侦听器的滥用1.6 事件处理函数的频繁绑定1.7 异步组件的加载性能2 解决方案与优化技巧2.1 合理使用响应式数据2.2 优化虚拟 DOM 更…

Rust Ubuntu下编译生成环境win程序踩坑指南

前言: 1,公司要给一线搞一个升级程序,需要在win下跑。 之前都是找开发总监帮忙,但是他最近比较忙。就让我自己搞。有了下文.。说来惭愧,之前写过一篇ubuntu下编译windows的文章。里面的demo就一句话 fuck world。依赖…

openharmony 4.1 运行busybox工具包(保姆教程)

1.下载 链接:Index of /downloads/binaries 进入其中后,找到 挑选适合你系统架构的版本,例如我这边是 https://busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-armv7r 右键复制链接 打开迅雷,直接粘…

算法四 习题 1.3

数组实现栈 #include <iostream> #include <vector> #include <stdexcept> using namespace std;class MyStack { private:vector<int> data; // 用于存储栈元素的数组public:// 构造函数MyStack() {}// 入栈操作void push(int val) {data.push_back…

GD32F407单片机开发入门(十七)内部RTC实时时钟及实战含源码

文章目录 一.概要二.RTC基本特点三.GD32单片机RTC内部结构图四.配置一个RTC走秒例程五.工程源代码下载六.小结 一.概要 RTC&#xff08;Real-Time Clock&#xff09;是一种用于追踪和记录实际时间的时钟系统。RTC模块提供了一个包含日期&#xff08;年/月/日&#xff09;和时间…

新能源汽车运动控制器核心芯片选型与优化:MCU、DCDC与CANFD协同设计

摘要&#xff1a;随着新能源汽车产业的迅猛发展&#xff0c;汽车运动控制器的性能和可靠性面临着更高的要求。本文深入探讨了新能源汽车运动控制器中MCU&#xff08;微控制单元&#xff09;、DCDC电源管理芯片和CANFD总线通信芯片的选型要点、优化策略及其协同设计方案。通过综…