git 的基本操作
1. git建立本地仓库
在想要建立的目录下输入命令
git init
我们可以看一下 .git目录下有什么
2. 配置git本地仓库
配置用户的 name 和 email
命令:git config [...]
配置完后,我们像查看一下 刚才的配置
2.1 查看配置命令
git config -l
2.2 删除配置
命令:git config --unset [...]
查看配置
配置已经删除了
2.3 全局配置
解释:在我们的一台服务器上有时候并不是只有一个git仓库,如果我们想要全局配置的话需要加一个选项 --global
git config --global [...]
查看配置项
2.4 删除全局配置
删除全局配置的话 只有 --unset 是不可以的,需要加上 --global 选项
3. 认识 git 工作区、暂存区、版本库
3.1 我们在gitcode目录下创建一个ReadMe文件,并查看
- 其中,ReadMe文件目前并未被git所管理, 因为当前的gitcode目录,并非真的git仓库,二gitcode目录下的隐藏文件 .git目录才是真的 版本库(仓库),但是我们并不可以手动的在 .git目录下修改文件(创建/删除 等...),所以 ReadMe文件就是工作区
但是,我们的工作区的文件并不是不可以被管理,我们需要做一些工作,看上图,
2. 我们图片上的 stage 区域,就是暂存区/索引
3.2 对工作区文件的管理
3.2.1 add
我们将工作区的的修改(新增、修改、删除),我们通过add,可以将修改的内容添加到暂存区,但是这并不算添加到版本库中
3.2.2 commit
在我们add之后,我们只有进行commit后才会把修改的内容存到版本库中
我们只有做完这两步,我们的git才能管理这个 ReadMe 文件
3.3 如何理解 git管理文件(add操作)
其实在我们的版本库中,还有一个objects 对象,我们的objects中存的是一个个的git对象,而我们 每一次add的时候(对工作区的修改的内容),都会存在一个新的git对象中,所以我们维护的这些 git对象,也就是对这些文件进行版本管理
我们的stage 中存的是索引,指向objects
3.4 commit
我们在commit后,就会把暂存区的内容存到master 中,而我们的master中也存的是索引
而我们想要拿到我们的master分支,我们只需要拿到 HEAD 指针,就好了
我们可以对应的看一下 .git目录 和上面的图片
但是我们的.git目录里面没有stage,因为 stage里面是暂存区,我们的git仓库是刚创建的,还没有暂存的内容,所以我们的.git目录里面还没有stage
4. git 添加文件_场景1
我们现在ReadMe文件中写入一些内容
然后我们使用add,将 ReadMe文件添加到暂存区
git add [...] :表示指定文件的修改内容添加到暂存区
git add . :表示将所有的文件的修改内容添加到暂存区
git commit -m "这里面描述修改内容" ,这个-m必不可少,-m后面是本次版本的修改内容
commit 后,会打印日志
5. 查看最近提交
git log
如果觉得这样太乱的话,可以加 --pretty=oneline 打印一行
6. 查看git文件
我们先看一下我们gitcode目录下的.git目录
我们现在看一下,我们的.git/HEAD
我们看到,我们的HEAD下有一个master
而我们知道,我们最后的内容都会存到master分支里面,我们看一下
我们看到我们的master里面是一串上面这样的文本,而我们注意,我们在上面commit后打印的日志里面就有这样内容
而我们的master存的就是索引,我们的索引最终都指向 objects
我们在看一下我们的 .git 目录里面的 objects目录
我们看前面的这两个,前面的这两位代表文件名,而后面的就代表d7里面的文件名了
如果我们想要查看里面的文件内容,我们的命令是:
git cat-file -p
这里面还有我们第一次提交的信息,我们再看一下我们该信息里面的 tree
我们继续看一下
我们看到,又打印出了一条信息,我们继续使用git cat-file -p 查看
我们看到了我们所写入的内容
7. git添加文件_场景2
我们先创建1个文件file1 然后 add
我们又创建一个文件 file2
然后我们 commit
我们原意是将file1 和 file2 都commit ,但是这里只有一个文件被changed 说明只有一个文件被修改,我们的file2没有被提交,因为我们的add是将文件放到暂存区(stage),我们的commit是将暂存区的文件给存到master分支中,我们的file2没有存到暂存区(也就是没有add),所以不可以被commit,如果我们想要将file2也存到master中,我们就继续对file2 进行add ,然后commit
8. 修改文件
实际上 git 追踪的是修改而不是文件
我们先将 hello world 修改为 hello git
8.1 查看文件是否被修改
git status
但是我们的 git status 并不能知道我们修改的内容
8.2 查看文件被修改的内容
git diff [...]
上面的图片里面的内容可以看一下代表什么
8.3 提交修改文件
git add后我们查看 git status
我们的这里的提示改变了,显示我们需要将改变commit
我们可以看一下没有add之前的提示
这里显示我们没有暂存区(stage)的内容需要提交
所以我们现在 commit 后继续用 git status 查看
9. git版本回退
版本回退:版本回退就是从当前版本回退到之前的某一个版本
命令:git reset [--soft | --mixed | --hard] [HEAD]
git reset 本质:回退的版本库中的内容
我们的git中是由三个区的分别是
1.工作区
2.暂存区
2.版本库
其中我们的git reset回退的结果是什么,由git reset 后面的三个选项觉得
- soft:只回退版本库
- mixed:回退版本库和暂存区,不会回退工作区
- hard:全部回退
- 默认:mixed
我们之前的提交
那么当我们想要回退到第一次提交,我们使用 hard
我们将第一次提交的那一串ID粘贴到后面,然后我们看到打印了一条日志
我们现在看到,我们之前提交的 file1 file2已经在工作区都回退了
我们继续查看log
我们这次的log 只剩下第一次提交的内容了
如果我们后悔了刚才的回退,那么我们怎么样?
我们还是使用 git reset 命令
我们找到刚才回退之前查看的log,找到最后一次提交的ID
我们看一下工作区的文件和log
那么如果我们找不到之前的commit ID 呢?
9.1查看之前提交ID
git reflog
我们前面的这一部分也是提交ID,我们同样也可以使用前面的这个ID进行回退
我们先看一下现在的提交信息
我们使用git reset进行回退,这次使用reflog前面的ID
我们回退之后我们在查看一下log
10. 撤销修改
我们现在已经有一个文本了,我们对已有文本进行修改,有三个场景
1.我们只对我们工作区的文本进行的修改
2.我们随工作区的文本进行修改后,还进行的add
3.我们不仅修改了工作区的文本,还add了,最后还commit了
我们的撤销操作对于这三种情况下是不同的
10.1 我们只对工作区进行了修改
我们想对工作区的文本进行撤销
命令:git checkout --
我们看一下ReadMe文档
git checkout -- 表示将工作区恢复到最近一次add/commit的状态
10.2 工作区和暂存区都修改
我们要是想回退到之前的状态我们应该怎么做?
命令:git reset 该命令不仅可以回退到之前版本还可以回退到当前版本
gti reset HEAD :HEAD代表回退到当前版本,如果想回退到上一个版本我们还可以在HEAD后面加^, 加一个^代表回退到上一个加两个 ^代表回退到上面两个版本
由于我们的暂存区已经修改,所以我们可以使用 --mixed / --hard, --hard会直接将工作区版本也回退, --mixed只能回退暂存区的,所以把暂存区回退后就是第一种情况了
我们在看一下status
我们的暂存区已经回退了
下面我们在使用第一种情况下的处理方法
我们看到这样就回退了
10.3 工作区、暂存区、版本库都修改了
前提:在我们commit后并没有push操作
我们的工作区、暂存区、版本库都修改了,所以我们使用 git reset --hard 操作撤销
10.4 总结
11. 删除文件
我们删除掉file1
我们使用 git 提供的 rm 删除操作
我们看一下git rm 的作用
1.删除了工作区的文件
2.删除了暂存区的文件
所以我们只需要最后commit就可以了
我们最后看一下status
我们的工作区以及没有要提交的了
git 的基本操作就到这里~
下一次讲 git 分支管理
相关文章:

git 的基本操作
1. git建立本地仓库 在想要建立的目录下输入命令 git init 我们可以看一下 .git目录下有什么 2. 配置git本地仓库 配置用户的 name 和 email 命令:git config [...] 配置完后,我们像查看一下 刚才的配置 2.1 查看配置命令 git config -l 2.2 删除…...

搭建Vue项目以及项目的常见知识
前言:使用脚手架搭建vue项目,使用脚手架可以开发者能够开箱即用快速地进行应用开发而开发。 搭建 #创建一个基于 webpack 模板的新项目 vue init webpack my-project #选择所需要的选项如图: cd my-project npm run dev访问localhost:808…...

TypeScript ~ TS Webpack构建工具 ⑦
作者 : SYFStrive 博客首页 : HomePage 📜: TypeScript ~ TS 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &…...
Rust 自建HTTP Server支持图片响应
本博客是在杨旭老师的 rust web 全栈教程项目基础上进行修改,支持了图片资源返回,杨旭老师的rust web链接如下: https://www.bilibili.com/video/BV1RP4y1G7KFp1&vd_source8595fbbf160cc11a0cc07cadacf22951 本人默认读者已经学习了相关…...
[游戏开发][Unity]UnityWebRequest使用大全
首先记录个小问题 使用new UnityWebRequest的方式,最终的downloadHandler是个null 使用UnityWebRequest.Get的方式,最终的downloadHandler会是DownloadHandlerBuffer 从网站或本地下载内容,包括文本或二进制数据 IEnumerator downloadfile(st…...

如何使用Fiddler对手机进行弱网测试?(干货教程)
1.首先,fiddler连接手机 1)Tools->Options->Connections->设置端口8888,勾选Allow remote computers to connect 2)配置手机 注:手机和电脑需要在同一局域网下 手机进入网络详情,将代理改为手动 设置主机名、端口 主机…...

专业科普:什么是单片机?
一、什么是单片机 单片机诞生于20世纪70年代末,它是指一个集成在一块芯片上的完整计算机系统。单片机具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器ÿ…...

深度学习-第T11周——优化器对比实验
深度学习-第T11周——优化器对比实验 深度学习-第T11周——优化器对比实验一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目3、查看数据 四、数据预处理1、 加载数据1、设置图片格式2、划分训练集3、划分验证集4、查看标签 2、数据可视化3、检查数据4、配置数据集…...

基于Dlib的疲劳检测系统
需要源码的朋友可以私信我 基于Dlib的疲劳检测系统 1、设计背景及要求2、系统分析3、系统设计3.1功能结构图3.2基于EAR、MAR和HPE算法的疲劳检测3.2.1基于EAR算法的眨眼检测3.2.2基于MAR算法的哈欠检测3.3.3基于HPE算法的点头检测 4、系统实现与调试4.1初步实现4.2具体实现过程…...

three.js通过CubeTexture加载环境贴图,和RGBELoader加载器加载hdr环境贴图
一、使用CubeTexture进行环境贴图 1.CubeTexture使用介绍 Three.js中可以通过使用CubeTexture进行环境贴图,CubeTexture需要将6张图片(正面、反面、上下左右)包装成一个立方体纹理。下面是一个简单的例子: 首先需要加载六张贴图…...

pycharm中Terminal输入sqlite3,出现无法将sqlite项识别为cmdlet**的解决方法
前提:本机上已安装sqlite3,安装详见:pycharm社区版中安装配置sqlite3_Sunshine_0426的博客-CSDN博客 问题: cmd命令行中或pycharm中Terminal行输入sqlite3 db.sqlite3命令后,出现“无法将“sqlite3”项识别为 cmdlet…...

VSCode 安装配置教程详解包含c++环境配置方法
vscode安装教程及c环境配置详解 vscode下载安装下载C扩展插件VScode C环境配置配置环境变量检查 MinGW 安装配置编译器:配置构建任务检查是否安装了编译器配置完毕 vscode下载安装 地址:官网下载地址 直接打开下载好的.exe文件进行安装即可࿰…...
Baumer工业相机堡盟工业相机如何通过BGAPISDK将图像放大缩小显示(C#)
Baumer工业相机堡盟工业相机如何通过BGAPISDK将图像放大缩小显示(C#) Baumer工业相机Baumer工业相机BGAPISDK和图像放大缩小的技术背景Baumer工业相机通过BGAPISDK将相机图像图像放大缩小功能1.引用合适的类文件2.通过BGAPISDK将相机图像图像放大缩小功能…...

8.1 PowerBI系列之DAX函数专题-进阶-解决列排序对计算的影响
需求 下列矩阵中,在月份列不按照原始数据的month_no排列时,能正确计算销售额占比,但是当月份按照month_no排序时就会出错,需要解决这个问题。 实现 month % divide([amount],calculate([amount],all(date[month desc]))) //排…...

Java的第十二篇文章——集合
目录 第十二章 集合 学习目标 1. 集合框架的由来 2. 集合框架的继承体系 3. Collection接口 3.1 Collection接口的常用方法 4. Iterator接口 4.1 Iterator接口的抽象方法 4.2 获取迭代器接口实现类 4.3 迭代器的实现原理 4.4 并发修改异常 4.5 集合存储自定义对象并…...

docker 镜像制作 与 CI/CD
目录 镜像到底是什么? 使用docker创建镜像 步骤: 1、编辑Dockerfile(Dockerfile是docker制作镜像的配方文件) 2、编辑requirements.txt文件 3、编辑app.py文件,我们的程序文件 4、生成镜像文件 5、查看生成的镜…...

Spring Boot 异常报告器解析
基于Spring Boot 3.1.0 系列文章 Spring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解Spring Boot 监听器详解Spring Boot banner详解Spring Boot 属性配置解析Spring Boot 属性加载原理解析Spring Boot 异常报告器解析 创建自定…...

瑞亚太空活动公司RSA与英国国防与安全加速器达成量子项目合作
(图片来源:网络) 瑞亚太空活动公司(RSA)与英国国防与安全加速器(DASA)签署了合作协议,主要开发名为“无限交换”的可操纵量子真空的技术项目。这是RSA在英国签订的第一份合同&…...

Shapley值法介绍及实例计算
Shapley值法介绍及实例计算 为解决多个局中人在合作过程中因利益分配而产生矛盾的问题,属于合作博弈领域。应用 Shapley 值的一大优势是按照成员对联盟的边际贡献率将利益进行分配,即成员 i 所分得的利益等于该成员为他所参与联盟创造的边际利益的平均值…...

不用手动改 package.json 的版本号
“为什么package.json 里的版本还是原来的,有没有更新?”,这个时候我意识到,我们完全没有必要在每次发布的时候还特意去关注这个仓库的版本号,只要在发布打tag的时候同步一下即可 node.js 部分,我们得有一个…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...