【Git】第五篇:基本操作(添加文件)
.git目录结构

我们在前文中提过了.git目录,也明确说了我们不能手动去.git目录下创建修改等任何操作。
添加文件
我们现在已经了解到,git是一个版本控制器,可以对我们的文件进行管理。而我们需要使用git管理文件的时候,我们必须将这些文件放到git仓库中,只有在git仓库中的文件才可以被我们的git追踪管理。
看完上面我们有个疑问:需要使用 git 进行文件管理,需要把文件放到仓库中,那是不是要我们把文件添加到
.git目录下去呢?
文章开头又说我们不能手动去添加或修改.git目录下的任何文件,那我们该怎么将文件添加到仓库中去呢?
那接下来我们就看看如何将文件添加到版本库中去吧。
首先说明一下,所有的版本控制系统,其实只能跟踪到文本文件的改动,比如txt文件、网页、程序代码等等,Git也不例外。版本控制系统可以记录你每次的改动,比如在第5行添加了一个单词“linux”,在第八行删除了一个单词“windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但是却补能跟踪二进制文件的细致改动,只能把二进制文件每次串起来,也就是只知道图片或视频从100KB改成了200KB,但是到底改了啥,版本控制系统不知道,也没办法知道。
新建文件添加到本地仓库:git add、git commit -m
add:将文件添加到缓存区
commit:提交到本地仓库
- 在工作区创建一个文件readme.txt
在工作区创建一个文件
touch readme.txt (linux中的新建文件命令)vim readme.txt #编辑该文件
在文件里写入一句话:

- 将文件提交到本地git版本仓库中
- 首先:使用git add命令将文件添加到本地仓库的提交缓存(也就是提交到暂存区):
git add readme.txt
这个时候还不算添加到了本地仓库,我们还需要使用git commit命令为其添加修改的描述信息 - 使用git commit命令为其添加修改的描述信息:(完成后,就将文件提交到了仓库中了)
注意在使用git commit时我们只需要简单描述一下我们做了什么,不要像写注释那样写一大堆,不然将来在回滚代码或者查看历史版本时,很难审阅。
我们需要使用-m选项来简写描述我们的信息,如果不使用-m,会调用终端的注释编辑器让你输入描述信息,但是不建议使用,因为注释编辑器比较难用,不舒服。
git commit -m "add new file" - git commit 会为我们生成40位的哈希值,用于作为id,并把刚刚用git add添加到提交缓存区里的文件提交到本地仓库中,便于我们回滚,至此,这个文件就已经添加到本地仓库中了,同时本地仓库也迭代了一个版本。

- 首先:使用git add命令将文件添加到本地仓库的提交缓存(也就是提交到暂存区):
查看历史提交日志:git log

第一行的commit是哈希算法算出的id
Author是提交者是谁的意思,显示格式是:用户名 <邮箱>
Date的意思是提交时间,后面的+0800这个是格林尼治时间,代表当前是以哪儿的时间地作为基准,这是世界时间,用它来作为基数与当前所在地时差进行计算,包括地球自转等公式。
最下面的就是注释了,就是我们在git commit时添加的描述信息。
查看.git目录

我们可以看到,当我们将文件添加到本地仓库后,我们的.git目录和文章开头相比,就发生了变化。

还是这副图:
首先是index文件:我们在上一篇中说到的暂存区,就是这个文件,我们add就是先将文件添加到暂存区中(注意:不是将文件实体添加到暂存区中,暂存区存的是文件的索引,真正的文件实体在Git 对象库(.git/objects)中)。

HEAD文件: 我们在上篇提到“HEAD” 实际是指向 master 分支的一个“游标”,我们可以查看一下HEAD指针是不是指向master的。

可以看到是指向master的。

我们可以查看一下master文件下存放的是什么内容:

是一串字符串,我们有没有觉得这一串字符串很熟悉呢?

其实就是我们最近一次提交的commit ID,这里我们就可能需要验证一下了,是只记录最近一次,还是存放所有提交的ID,因为我们目前直提交了一个文件,接下来我们多提交几个文件试试。

我们又想本地仓库中添加了两个文件,这是我们再去看看master中存放的是什么:

从这我们就可以发现,仅仅是存放最近一次提交的commit ID。
我们要知道,不管是index暂存区还是master分支,这两个目录树存放的都是文件实体索引,而实体又存放在Git 对象库(.git/objects)中),那我们来看看object文件该怎么看:

其实这就里面就代表每个对象,那该怎么去看呢?其实很简答。
还是看commit ID,
ID的前两位是文件名(也就是文件夹的名称),所以我们就可以很快找到我们添加到仓库中的文件:

那我们既然找到他了,那我们来看看这个对象里具体有什么东西,这时我们不能再使用catl来进行查看了。用以下命令:
git cat-file -p commitID
例如:

我们查看到里面存放的是这些信息。我们可以观察到除了第一行的tree我们不知道是什么外,其他的我们都知道是什么。
patent: 是我们上一次提交的commitID,然后就是提交的用户邮箱,最后就是本对象提交时打印的描述信息。
那我们来看看 tree 里是什么:

可以看到里面存放的就是我们提交的文件,而每一个文件也都有自己的索引。
我们可以查看一下其中一个内容:

其实这里面就存放的是我们修改文件的内容
补充上文add与log的内容:
git add --all
git add .
git add --all命令会将当前目录下包括子目录下所有改动的文件提交到暂存区,注意只包括改动的文件,不改动的不会放到缓存区。
这个命令还会把删除的文件也提交进去
如你在本地删除了min.c ,这个命令会把删除信息也记录进去,然后在提交的时候把仓库里对应的min.c也删除掉,也就是说你在本地做的删除操作会被记录,提交仓库时会删除同样的文件,如果不想删除文件,可以使用git add .,注意后面有一个“.”点的符号,这个命令跟git add --all一样,但是不会记录删除操作。
只要对文件进行了修改,那我们就需要重新 git add,不然只是在工作区中修改,仓库中还是原来的版本
最后别忘记使用git commit提交到仓库中
git log --pretty=oneline
我们在使用git log命令看历史记录时,会打印以下信息:

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数

git status
可以查看当前仓库状态。
比如我对某个仓库里的文件,进行了修改,那我们就可以使用这个命令进行状态查看,或者我们在向仓库中添加新的文件时,也可以使用这个命令进行查看状态。
例如:
我们对一开始创建的readme.txt文件内容进行添加以下内容:

我们对文件进行修改后,使用git status来查看此时仓库状态。

这里很明确的提示咱们,修改的文件时哪个文件,而且只是在工作区进行了修改,并没有进行提交到暂存区中。
注意: 我们使用git status命令只能查看哪个文件被修改,并不能查看具体文件修改的内容。
查看被修改的内容:
命令:
git diff filename
例如:

对上述进行一下解析:

那我们进行提交到暂存区后看看。

此时我们就可以看到有个修改文件提交到了暂存区。

当我们提交到仓库中之后,在使用git status查看,则表示没有需要提交的文件了
相关文章:
【Git】第五篇:基本操作(添加文件)
.git目录结构 我们在前文中提过了.git目录,也明确说了我们不能手动去.git目录下创建修改等任何操作。 添加文件 我们现在已经了解到,git是一个版本控制器,可以对我们的文件进行管理。而我们需要使用git管理文件的时候,我们必须将…...
vue通过span-method合并列之后,合并列显示在中间位置,根据鼠标滑动跟随展示
当vue通过span-method合并列之后,出现的合并列显示在中间位置,但是如果页面没有分页,如何进行展示呢,难道要滑到最下面去看吗,下面我们来根据鼠标滑动跟随展示 没有处理的合并页面 <template> <el-table:dat…...
gRPC 四模式之 一元RPC模式
一元RPC模式 一元 RPC 模式也被称为简单 RPC 模式。在该模式中,当客户端调用服务器端的远程方法时,客户端发送请求至服务器端并获得一个响应,与响应一起发送的还有状态细节以及 trailer 元数据(这部分不是默认发送的,…...
Java GUI实现贪吃蛇游戏
贪吃蛇是一款经典的游戏,玩法相对简单但富有挑战性。以下是贪吃蛇游戏的基本玩法说明: 目标:控制一条蛇,在游戏区域内吃到尽可能多的食物,使蛇身变长,同时避免撞到自己的身体或游戏区域的边界。 控制&…...
Vue3 使用教程
目录 一、创建vue3工程1. 使用vue-cli创建2.使用 vite 创建 二、setup使用三、ref函数四、reactive函数五、计算属性与监视属性5.1 computed函数5.2 watch函数5.3 watchEffect函数 六、自定义hook函数七、toRef函数八、shallowReactive 与 shallowRef九、readonly 与 shallowRe…...
卡方检验-python代码
故事背景 问题 卡方检验的结果怎么计算? 方法 python代码 import numpy as np from scipy.stats import chi2_contingency# 观察频数矩阵 observed np.array([[47, 21, 17],[63, 29, 15],[11, 2, 4]])# 进行卡方检验 chi2, p, dof, expected chi2_contingency(o…...
电磁场与电磁波part4--时变电磁场
1、采用洛伦兹条件使得矢量位 与标量位 分离在两个独立的方程中,且矢量位 仅与电流密度 有关,而标量位 仅与电荷密度 有关。 2、电磁能量守恒定理(坡印廷定理) 即减少的电磁能量电磁场所做的功流出的电磁能量 3、设u(r,t)是…...
电压跟随器
电压跟随器即输入多大电压就输出多大的电压,那其起什么作用呢,直接用导线不行吗? 下图为Multisim软件仿真结果,很明显输入电压6.5V输出电压使用万用表测得同为6.5V,验证了电压跟随器的作用。 在同相放大电路的基础上&a…...
元宇宙3D云展厅应用到汽车销售的方案及特点
为了紧紧抓住年轻消费者的需求,汽车销售行业也正在经历一场深刻的变革。在这个变革的前沿,元宇宙3D汽车展厅作为一项全新技术闪亮登场,打破了传统汽车销售模式的限制,为消费者带来了前所未有的购车体验。 元宇宙3D汽车展厅采用了尖…...
SourceTree修改Git密码
SourceTree用的好好的,无奈公司隔段时间强制更改电脑密码。更改完成后SourceTree无法使用,重新输入密码。VS的nuget也是。查资料虽然也能比较快的解决,但是。。。。在此转载记录下。 1. 找到 SourceTree 配置文件所在目录 ‘userhosts’ 目录…...
java中的深度复制和浅复制的BUG
刷题刷到LeetCode回溯DFS的算法题39题的时候,碰见一个Arraylist里面的bug,其中dfs函数里面的第一个if判断里面的语句 paths.add(path); path.clear();其中path是添加了path,但是添加之后path.clear(),导致原来添加到paths的path置为空数组,因为ArrayList的add只是把一个引用指…...
计算机毕业设计 基于SpringBoot的车辆网位置信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
集软件库、论坛、社区、工具箱、积分商城、会员体系、在线商城一体的后台系统+HBuilderX 前端软件社区
集软件库、论坛、社区、工具箱、积分商城、会员体系、在线商城等多个功能于一体的全面后台系统加上强大的HBuilderX前端软件社区,为用户提供了全面的应用开发和交流平台 企业猫提供了完善的后台搭建服务,通过该服务,用户可以方便地搭建出所需…...
【解决Qt编译报错:-1: warning: **.so, not found(try using -rpath or -rpath-link)】
[TOC](Qt调用opencv报错👎 warning: libopencv_flann.so.406, needed by **//libopencv_features2d.so, not found (try using -rpath or -rpath-link)) 最终提示使用-rpath,于是抱着试试看的方法改写.pro文件: QMAKE_LIBDIR_FLAGS -Wl,-r…...
关于数据mysql ->maxwell->kafka的数据传输
个人名片: 🐅作者简介:一名大三在校生,热爱生活,爱好敲码! \ 💅个人主页 🥇:holy-wangle ➡系列内容: 🖼️ tkinter前端窗口界面创建与优化 &…...
【linux】查看CPU的使用率
命令1:top top 总体系统信息 uptime:系统的运行时间和平均负载。tasks:当前运行的进程和线程数目。CPU:总体 CPU 使用率和各个核心的使用情况。内存(Memory):总体内存使用情况、可用内存和缓存…...
【系统稳定性】1.6 黑屏(三)
五,QNX启动异常 qnx启动异常无疑同样是灾难级的存在。qnx是目前座舱方案中主流的存在,如果qnx存在异常会导致host或la或其他娱乐世界offline。那么导致qnx的原因有很多,相应地,我们也有很多的排查手段。 5.1 以太网连接 座舱方案中目前还是多域的设计,那么多域之间的连…...
《使用EasyExcel在Excel中增加序号列的方法》
《使用EasyExcel在Excel中增加序号列的方法》 1、简介2、正文3、核心代码4、使用方法5、效果 1、简介 在处理Excel文件时,有时候需要为表格增加序号列。本文介绍了如何使用Java代码实现在Excel中增加序号列的功能,并提供了一个示例代码。 2、正文 在处理…...
【Linux】安全审计-audit
文章目录 一、audit简介二、开启auditd服务三、相关文件四、审计规则五、审计日志查询及分析附录1:auditctl -h附录2:systemcall 类型 参考文章: 1、安全-linux audit审计使用入门 2、audit详细使用配置 3、Linux-有哪些常见的System Call&a…...
Linux 之查看标准错误码工具
目录 1. Linux 之查看标准错误码工具 1. Linux 之查看标准错误码工具 $ sudo apt install moreutils$ errno -l EPERM 1 不允许的操作 ENOENT 2 没有那个文件或目录 ESRCH 3 没有那个进程 EINTR 4 被中断的系统调用 EIO 5 输入/输出错误 ENXIO 6 没有那个设备或地址 E2BIG 7 参…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
python数据结构和算法(1)
数据结构和算法简介 数据结构:存储和组织数据的方式,决定了数据的存储方式和访问方式。 算法:解决问题的思维、步骤和方法。 程序 数据结构 算法 算法 算法的独立性 算法是独立存在的一种解决问题的方法和思想,对于算法而言&a…...
