广州led网站建设/网站推广的工作内容
Git基本操作(2)
- 上交文件之后,git文件的变化
- git cat-file
- HEAD指针里面有啥
- 文件被修改
- git status
- git diff + 文件名
- 版本回退(git reset)
- 撤销回退
- git reflog
- 撤销的三种情况
- 还没有add
- git checkout -- [file]
- 已经add还没有commit
- 已经add且commit
- 从本地仓库删除文件
- git rm 文件名
今天我们来继续了解Git的操作
上交文件之后,git文件的变化
我们之前不是上交了几个文件嘛,我们可以看看我们隐藏的.git文件发生什么变化没有:
我们发现,我们的对象库中记录了每次上交的commit编号,而编号的前两位就是此次上交储存在对象库中的文件名。
objects 为Git的对象库,里面包含了创建的各种版本库对象及内容。当执行git add 命令时,暂存区的目录树被更新,同时⼯作区修改(或新增)的文件内容被写⼊到对象库中的⼀个新的对象中,就位于?“.git/objects”?目录下,查找object时要将commit id 分成2部分,其前2位是⽂件夹名称,后38位是文件名称
git cat-file
找到这个⽂件之后,⼀般不能直接看到里面是什么,该类⽂件是经过? sha (安全哈希算法)加密过的文件,好在我们可以使用 git cat-file 命令来查看版本库对象的内容:
其中还有一行tree b7a6dcbed4b5f267fde31ed7438195daaace7755,我们也可以打印来看看
如果我们此时继续查看,我们就可以查看My_file里面的内容:
因为我的My_file里面没有任何内容,所以没有打印任何内容。
通过这次操作,我们可以大概理解,git会记录我们的修改操作,我们找到对应的修改操作之后,就可以找到对应的文件。
HEAD指针里面有啥
除此之外,我们可以看看HEAD指针里面有啥:
我们来看看日志:
这时候我们知道了,HEAD指针里面储存了最近一次上交时的commit编号。
文件被修改
首先,我们得知道git是追踪修改痕迹(这里的修改痕迹指的是新增文件,修改文件,删除文件)的版本控制器。我们之前把My_file文件已经上交了,如果此时我们将My_file里写入文字:
此时我们修改了工作区中的My_file文件。
git status
此时我们可以用git status来查看我们git仓库的状态:
这里提示我们工作区中一个文件被修改了,就是我们的My_file。而我们的暂存区没有改动。
git diff + 文件名
我们可以用git diff + 文件名来查看到底我们的文件有了哪些变化:
我们看到带有加号的内容就是新增的内容。
我们还可以用git diff HEAD – [file] 命令来查看版本库和工作区文件的区别。
我们了解好了状态之后,我们就可以把文件提交暂存区:
这个时候我们再来看仓库的状态:
这个时候显示的是,,修改需要被commited了,我们此时commit一下:
这时候,显示的是没有什么需要被提交,工作区是干净的。
版本回退(git reset)
git最重要的功能之一就是版本回退:
之前我们也提到过,Git能够管理⽂件的历史版本,这也是版本控制器重要的能⼒。如果有⼀天你发现之前前的⼯作做的出现了很大的问题,需要在某个特定的历史版本重新开始,这个时候,就需要版本回退的功能了。
执行git reset 命令⽤于回退版本,可以指定退回某⼀次提交的版本。要解释⼀下“回退”本质是要将版本库中的内容进⾏回退,⼯作区或暂存区是否回退由命令参数决定:
git reset 命令语法格式为: git reset [–soft | --mixed | --hard] [HEAD]
• –mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件保持不变。
• –soft 参数对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
• –hard 参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要⽤这个命令,因为工作区会回滚,你没有提交的代码就再也找不回了,所以使用该参数前⼀定要慎重。
• HEAD 说明:
◦ 可直接写成commit id,表示指定退回的版本
◦ HEAD 表示当前版本
◦ HEAD^ 上⼀个版本
◦ HEAD^^ 上上⼀个版本
◦ 以此类推…
• 可以使用〜数字表示:
◦ HEAD~0 表示当前版本
◦ HEAD~1上⼀个版本
◦ HEAD^2 上上⼀个版本
为了演示,我们做一些准备工作:
现在我们想退回到第一次提交的版本,我们现在可以用git reset来进行回退,但是在这之前,我们要弄清工作区 暂存区 版本库中的内容:
我们现在工作区 暂存区 版本库的内容都是第二次提交的内容:
我们的 –soft 参数对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本
我们的 –mixed 为默认选项,使用时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件件保持不变。
我们的 –hard 参数将暂存区与工作区都退回到指定版本。切记用作区有未提交的代码时不要用这个命令,因为工作区会回滚,你没有提交的代码就再也找不回了,所以使用该参数前⼀定要慎重。
我们这里演示一下–soft选项:
我们来查看仓库的状态:
我们来看看版本库和工作区文件的区别:
再来看看工作区和暂存区的区别:
发现版本库的内容已经回退,工作区和暂存区的内容没有回退。
除此之外,我们还可以利用commit的id来回退,我们打印日志:
找到第一次上交的commit编号,然后用类似的方法:
撤销回退
拿上面举例,我后悔撤销了,该怎么办呢?其实,我们如果能拿到第二次提交时的commit的id,就没问题。
但是这是因为凑巧我们打印了第二次提交时的commit的id,要是万一没打印该怎么办?
git reflog
也许还可以补救,我们可以用git reflog命令,可以查看我们本地的每一次命令:
HEAD前面的部分commit的id也可以帮助我们进行回退:
但是,现实开发中,因为一直再进行开发,id号什么的,早就忘的一干二净了,所以还是小心点为上策~。
撤销的三种情况
还没有add
这个时候,我们只是在工作区进行了修改,还没有进行add。
假设,我现在对我们的文件进行了修改:
现在我想回到修改之前的版本,我们有一条命令:
git checkout – [file]
git checkout – [file] 命令让工作区的
文件回到最近⼀次 add 或 commit 时的状态。要注意 git checkout – [file] 命令中的
– 很重要,切记不要省略,⼀旦省略,该命令就变为其他意思了
已经add还没有commit
这个时候我们可以用–mixed选项:
git reset HEAD 文件名
因为–mixed是默认的,所以不用再写。
已经add且commit
这个时候只能用–hard:
git reset --hard 想回退的版本的commitid
这个时候希望文件还没有交到远程仓库上,要是交了,事情就麻烦了。
从本地仓库删除文件
如果我们直接在工作区删除文件,git会记录我们的修改的:
我们只删除了工作区的,并没有删除暂存区的,要删除暂存区的,我们要使用:
git rm 文件名
删除之后,记得commit我们的修改痕迹:
相关文章:

Git基本操作(2)
Git基本操作(2) 上交文件之后,git文件的变化git cat-file HEAD指针里面有啥文件被修改git statusgit diff 文件名 版本回退(git reset)撤销回退git reflog 撤销的三种情况还没有addgit checkout -- [file] 已经add还没…...

编程笔记 Golang基础 023 切片
编程笔记 Golang基础 023 切片 一、切片二、定义与初始化三、基本操作四、示例 Go语言中的切片(slices)是基于数组的抽象数据类型,它提供了一种灵活的方式来处理可变长度的数据序列。切片本身不存储任何数据,而是指向底层数组的一…...

qt 软件发布(Windows)
1. 开发环境 QtCreator MSVC编译器 2. 源码编译 生成release或者debug版本的exe可执行文件(x64或x86) 3. windeployqt 打包 ①左下角开始菜单栏找到QT的命令交互对话框,如下图MSVC 2017 64-bit(根据第二步编译的类型选择64位或者32位)。 ②cd 切换到第二步可…...

《汇编语言》- 读书笔记 - 第11章-标志寄存器
《汇编语言》- 读书笔记 - 第11章-标志寄存器 标志寄存器指令与标志位关系11.1 ZF(Zero Flag,零标志位)11.2 PF(Parity Flag,奇偶标志位)11.3 SF(Sign Flag,符号标志位)处…...

1.QT简介(介绍、安装,项目创建等)
1. QT介绍 Qt(官方发音 [kju:t])是一个跨平台的C开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序 Qt 是纯 C 开发的,正常情况下需要先学习C语言、然后在学习C然后才能使用…...

【服务器】服务器推荐
一、引言 在数字世界的浪潮中,服务器作为数据存储和处理的基石,其重要性不言而喻。而在这个繁星点点的市场中,雨云以其独特的优势和超高的性价比,逐渐成为众多企业和个人的首选。今天,就让我带你走进雨云的世界&#…...

信号系统之线性图像处理
1 卷积 图像卷积的工作原理与一维卷积相同。例如,图像可以被视为脉冲的总和,即缩放和移位的delta函数。同样,线性系统的特征在于它们如何响应脉冲。也就是说,通过它们的脉冲响应。系统的输出图像等于输入图像与系统脉冲响应的卷积…...

uniapp腾讯地图JavaScript Api,H5端和原生APP端可用
因项目需要,在uniapp中集成使用腾讯地图,为了方便维护,希望通过一套代码实现H5和APP同时可用。H5显示相对简单,APP端比较麻烦,记录下实现过程 一、集成步骤 1.使用 renderjs script标签使用renderjs,因为…...

MyBatisPlus:PG数组类型自动映射问题
引言: PostGreSQL数据库提供了丰富的数据类型,通过查看官网文档,我们也可以发现,PG也提供了对数组类型的支持。 但是在实际开发中,我们通常是使用MyBatis/MyBatisPlus这种半自动ORM映射框架来实现数据库/表数据基本的增删改查,以及其它操作。那么,问题来了,如何…...

Data-Shape制作UI节点简介
很多小伙伴对于Data-Shape制作简单的UI都是似懂非懂,群里很多小伙伴也总是询问相关的问题,那么,今天我就简单举几个例子,专门介绍下Data-Shape创建简单UI的教程。 首先,本次教程,使用的是Data-Shape 2021.…...

kubernetes负载均衡部署
目录 1.新master节点的搭建 对master02进行初始化配置(192.168.88.31) 将master01的配置移植到master02 修改master02配置文件 2.负载均衡的部署 两台负载均衡器配置nginx 部署keepalived服务 所有node节点操作 总结 实验准备: k8s…...

NestJS入门6:日志中间件
前文参考: NestJS入门1 NestJS入门2:创建模块 NestJS入门3:不同请求方式前后端写法 NestJS入门4:MySQL typeorm 增删改查 NestJS入门5:加入Swagger 1. 安装 nest g middleware logger middleware 2. lo…...

CommonJS、require、moudle实现两个文件传参
目的:实现两个文件传参 文件A给B传入一个参数,并且文件B代码执行后再传回A。 场景 拆分express项目中的app.js文件中的路由、项目越大会使app.js文件变大,复杂 如何使用 app.js文件 导入路由文件调用路由文件,调用的时候传入…...

关于php、php-fpm的解释
PHP语言是由PHP程序解释的,而不是由php-fpm程序解释的。 PHP(Hypertext Preprocessor)是一种通用开源脚本语言,最初是为创建动态Web页面而设计的,但现在也可以用于命令行脚本编写等用途。PHP程序通常由Web服务器&…...

【CMake】(8)包含库文件
示例项目结构 假设你的项目结构如下所示: 项目根目录/ ├── CMakeLists.txt ├── include/ │ └── head.h ├── lib/ │ └── libcalc.a └── src/└── main.cpp链接库 link_directories和target_link_libraries指令用于配置和链接库文件。 link_direc…...

【 JS 进阶 】Web APIs (二)
“人生如舞台,每一个瞬间都是一场精彩的表演。在舞台的灯光下,以坚韧为舞伴,跳出自己的独特舞步,创造属于自己的绚丽人生芳华。” - 露易丝梭罗 学习会为 DOM 注册事件,实现简单可交互的网页特交。 事件是编程语言中的…...

解决弹性布局父元素设置高自动换行,子元素均分高度问题(align-content: flex-start)
案例: <view class"abc"><view class"abc-item" v-for"(item,index) in 8" :key"index">看我</view> </view> <style lang"less">.abc{height: 100px;display: flex;flex-wrap: …...

什么是负载均衡集群?
目录 1、集群是什么? 2、负载均衡集群技术 3、负载均衡集群技术的实现 4、实现效果如图 5、负载均衡分类 6、四层负载均衡(基于IP端口的负载均衡) 7、七层的负载均衡(基于虚拟的URL或主机IP的负载均衡) 8、四层负载与七层…...

【es6】的新特性
声明语法 letconstclass字符串/函数/对象/数组的新语法/扩展功能模版字符串 反引号标签函数Proxy /ReflectPromiseclsss & static 静态方法 & extends 继承SetMapSymbolfor of 可迭代对象迭代器模式 通过 Symbol.interator 对外提供统一个接口外部可以通过 for...of 去…...

Java中的多线程是如何实现的?
在Java中,多线程的实现主要依赖于java.lang.Thread类和java.util.concurrent包中的类。以下是Java实现多线程的基本方法和概念: 1. **继承Thread类:** - 创建一个新的类继承自Thread类。 - 重写Thread类的run()方法,定义线…...

C++知识点总结(22):模拟算法
一、概念 模拟算法 根据题目描述进行筛选提取关键要素,按需求书写代码解决实际问题的算法。 二、步骤 1、提取题目的关键要素 2、根据关键要素的需求完成代码 三、关键要素 1、题目目的 2、样例的执行逻辑(样例分析) 3、数据范围(…...

opengl 学习纹理
一.纹理是什么? 纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节;类似于图像一样,纹理也可以被用来储存大量的数据,这些数据可以发送到着色器上。 采样是指用纹理坐标来获取纹…...

STM32控制max30102读取血氧心率数据(keil5工程)
一、前言 MAX30102是一款由Maxim Integrated推出的低功耗、高精度的心率和血氧饱和度检测传感器模块,适用于可穿戴设备如智能手环、智能手表等健康管理类电子产品。 该传感器主要特性如下: (1)光学测量:MAX30102内置…...
高级语言期末2011级A卷
1.编写函数,判定正整数m和n(均至少为2)是否满足:数m为数n可分解的最小质因数(数n可分解的最小质因数为整除n的最小质数) 提示:判定m为质数且m是n的最小因数 #include <stdio.h> #include…...

SpringAMQP消息队列
引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>配置文件 spring:rabbitmq:host: 172.27.99.52 # rabbitMQ的ip地址port: 5672 # 端口username: abcpa…...

二次元风格个人主页HTML源码
源码介绍 直接上传服务器压缩包解压就完事了,修改index.html内代码即可,注释写的很全,替换图片在文件夹img,只有前端,没有后台,大佬如果需要,可以自行添加后台。本源码非常适合个人工作室主页。…...

每日学习录
目录 [蓝桥杯 2022 省 A] 求和 题目描述 [蓝桥杯 2019 省 B] 特别数的和 题目描述 [蓝桥杯 2023 省 A] 填空问题 题目描述 [蓝桥杯 2020 省 AB1] 走方格 题目描述 [蓝桥杯 2017 省 AB] 分巧克力 [蓝桥杯 2016 省 B] 交换瓶子 题目描述 [蓝桥杯 2022 省 A] 求和 题目描…...

linux docker部署深度学习环境(docker还是conda)
在深度学习中,避免不了在远程服务器上进行模型的训练,如果直接在服务器裸机的基础环境跑显然是不可取的,此时搭建用于模型训练的docker环境显得尤为重要。 在深度学习中,避免不了在远程服务器上进行模型的训练,如果直…...

iOS面试:4.多线程GCD
一、多线程基础知识 1.1 什么是进程? 进程是指在系统中正在运行的一个应用程序。对于电脑而已,你打开一个软件,就相当于开启了一个进程。对于手机而已,你打开了一个APP,就相当于开启了一个进程。 1.2 什么是线程&am…...

云计算计算资源池与存储池访问逻辑
在云计算环境中,计算资源池和存储池通常是分开管理和访问的。计算资源池包含了用于运行虚拟机的 CPU、内存等计算资源,而存储池则提供了用于存储虚拟机镜像、数据等的存储资源。 计算资源池和存储池之间通常通过网络进行访问,它们之间不存在直…...