[Git][认识Git]详细讲解
目录
- 1.什么是仓库?
- 2.认识工作区、暂存区、版本库
- 3.认识 .git
- 1.index
- 2.HEAD && master
- 3.objects
- 4.总结
1.什么是仓库?
- 仓库:进⾏版本控制的⼀个⽂件⽬录
2.认识工作区、暂存区、版本库
-
工作区:在电脑上写代码或⽂件的⽬录
-
暂存区(
stage
/index
):⼀般存放在.git
目录下的index
文件(.git/index
)- 暂存区有时也叫作索引(
index
)
- 暂存区有时也叫作索引(
-
版本库(仓库):
.git
不算⼯作区,⽽是Git的版本库- 这个版本库⾥⾯的所有⽂件都可以被Git管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”
-
⼯作区、暂存区和版本库之间的关系
- 在创建Git版本库时,Git会⾃动创建⼀个唯⼀的
master
分⽀,以及指向master
的⼀个指针叫HEAD
- 当对⼯作区修改(新增、修改、删除)的⽂件执⾏
git add
命令时,暂存区⽬录树的⽂件索引会被更新 - 当执⾏提交操作
git commit
时,master分⽀会做相应的更新- 可以简单理解为暂存区的⽬录树才会被真正写到版本库中
- 可以简单理解为暂存区的⽬录树才会被真正写到版本库中
- 在创建Git版本库时,Git会⾃动创建⼀个唯⼀的
-
综上:通过新建或粘贴进⽬录的⽂件,并不能称之为向仓库中新增⽂件,⽽只是在⼯作区新增了⽂件,必须要通过使⽤
git add
和git commit
命令才能将⽂件添加到仓库中进⾏管理 -
是谁在维护版本呢?
objects
对象库在维护,里面存放了很多git对象- 修改的工作区内容会写入对象库的一个新的git对象中
- 每一个git对象,都描述了此次
git add
后所修改的内容
3.认识 .git
1.index
index
:暂存区,git add
后的内容都是添加到这里的
2.HEAD && master
HEAD
:默认指向master
分支的指针$ cat .git/HEAD ref: refs/heads/master
- 默认的
master
分支,里面保存着最新的commit id
$ cat .git/refs/heads/master d74fd33ce217d9d6aefab18c84a3c4fb542d293e
3.objects
objects
为Git的对象库,⾥⾯包含了创建的各种版本的库对象及内容- 当执⾏
git add
时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的对象中,位于".git/object
s"⽬录下objects ├── 78 │ └── c38e74ed7bad28f712b4b214fcc1f1dc2814b6 ├── 7a │ └── 535a4f3e6dba8a8dbcea9d7e3ee3c395aeabf3 ├── 84 │ └── ef513c15700a4fc435dd6e6ac284a49d7901ac ├── 8a │ └── e26cc86d8c9213c406383181dad60050e15df6 ├── 99 │ └── a6aad83baf0a7fdb6cf394f11ccde7845bcb1d ├── d7 │ └── 4fd33ce217d9d6aefab18c84a3c4fb542d293e ├── info └── pack
- 查找
object
时要将commit id
分成2部分,前2位是⽂件夹名称,后38位是⽂件名称 - 查看版本库对象的内容:
git cat-file
$ git cat-file -p d74fd33ce217d9d6aefab18c84a3c4fb542d293e tree 84ef513c15700a4fc435dd6e6ac284a49d7901ac parent 7a535a4f3e6dba8a8dbcea9d7e3ee3c395aeabf3 author DieSnowK <23336666@qq.com> 1721717265 +0800 committer DieSnowK <23336666@qq.com> 1721717265 +0800666.txt
- 其中
tree 84ef513c15700a4fc435dd6e6ac284a49d7901ac
$ git cat-file -p 84ef513c15700a4fc435dd6e6ac284a49d7901ac 100644 blob 99a6aad83baf0a7fdb6cf394f11ccde7845bcb1d 233.txt 100644 blob 78c38e74ed7bad28f712b4b214fcc1f1dc2814b6 666.txt
- 任意查看其中的一个文件,发现是对每个文件做的修改,被Git记录了下来
$ git cat-file -p 99a6aad83baf0a7fdb6cf394f11ccde7845bcb1d SnowK
4.总结
index
:暂存区,git add
后会更新该内容HEAD
:默认指向master
分⽀的⼀个指针refs/heads/master
:⽂件⾥保存当前master
分⽀的最新commit id
objects
:包含了创建的各种版本库对象及内容- 可以简单理解为存放了Git维护的所有修改
相关文章:
[Git][认识Git]详细讲解
目录 1.什么是仓库?2.认识工作区、暂存区、版本库3.认识 .git1.index2.HEAD && master3.objects4.总结 1.什么是仓库? 仓库:进⾏版本控制的⼀个⽂件⽬录 2.认识工作区、暂存区、版本库 工作区:在电脑上写代码或⽂件的⽬录…...
Win11系统Docker部署Blazor程序
1. 开发环境 Windows 11 家庭版,默认支持WSL2 2. Docker安装 安装Docker Desktop需要启用Win11的Linux子系统和虚拟机。以管理员身份运行命令行程序,执行如下命令: 启用适用于 Linux 的 Windows 子系统 dism.exe /online /enable-featur…...
C语言自定义类型结构体与位段超详解
文章目录 1. 结构体类型的声明1. 1 结构体声明1. 2 结构体变量的创建和初始化1. 3 结构体的特殊声明1. 3 结构体的自引用 2. 结构体内存对齐2. 1 对齐规则2. 2 为什么存在内存对齐2. 3 修改默认对齐数 3. 结构体传参4. 结构体实现位段4. 1 什么是位段4. 2 位段成员的内存分配4.…...
JS中关于预编译的【关键知识点】总结
在JavaScript中,预编译(hoisting)是指在代码执行之前,JavaScript引擎会首先对代码进行扫描,将所有的变量声明和函数声明提升到代码的最顶部。这一过程使得我们在代码中可以在声明之前使用变量和函数。理解预编译对于深…...
Elasticsearch 映射(mapping)
概念 在 Elasticsearch 中,映射(Mapping)定义了索引中字段的类型和属性。它是索引数据结构的基础,类似于传统数据库中的表结构定义。映射不仅定义了字段的类型(如 text、keyword、integer 等)…...
开放式耳机更适合运动的时候使用?开放式耳机推荐指南
开放式耳机确实非常适合运动时使用,原因主要有以下几点。 首先,保持对外界的感知是很重要的一点。在运动的时候,我们需要听到周围的环境声音,比如车辆的行驶声、行人的呼喊等,以便及时做出反应,保证自身安全…...
食堂窗口自助点餐小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,商家管理,店铺信息管理,菜品分类管理,菜品信息管理,订单管理,系统管理 微信端账号功能包括:系统首页&#…...
请说出路由传参和获取参数的三种方式
在Vue.js中使用Vue Router进行路由管理时,传递和获取参数是常见的需求。这里介绍三种主要的路由传参和获取参数的方式: 1. 通过URL的查询参数(Query Parameters) 传递参数: 当你需要传递一些非敏感数据(…...
精准防控,高效管理:AI智能分析网关V4区域未停留检测算法的介绍及应用
一、区域未停留AI检测算法概述 随着人工智能和计算机视觉技术的飞速发展,区域未停留AI检测算法作为一种重要的视频分析技术,逐渐在各个领域得到广泛应用。该算法通过高效处理视频流数据,能够实时分析并判断目标对象是否在预设区域内有足够的…...
html+css練習:iconfont使用
1.網址地址:https://www.iconfont.cn/search/index 2.註冊登錄,將需要的圖標添加到購物車 3.下載代碼 4.下載后的代碼有一個html頁面,裡面有詳細的使用方式...
算法导论 总结索引 | 第五部分 第二十一章:用于不相交集合的数据结构
一些应用涉及 将n个不同的元素分成一组不相交的集合。寻找包含给定元素的唯一集合 和 合并两个集合 1、不相交集合的操作 1、一个不相交集合 数据结构 维持了 一个不相交动态集的集合 S {S_1, S_2,…, S_n}。用一个代表 来标识每个集合,它是这个集合的某个成员。…...
【单例设计模式】揭秘单例模式:从原理到实战的全方位解析(开发者必读)
文章目录 深入理解单例设计模式:原理、实现与最佳实践引言第一部分:设计模式简介第二部分:单例模式定义第三部分:单例模式的优点和缺点第四部分:单例模式的实现方式懒汉式非线程安全的实现线程安全的实现(双…...
VTK8.2.0编译(Qt 5.14.2+VS2017)
VTK8.2.0编译(Qt 5.14.2VS2017) 关于Qt和MSVC的安装,可以参考文章(QtMSVC2017)。 本篇VTK在QtMSVC的配置下的编译。VTK 以8.2.0为例。 一、环境变量的配置 我们打开电脑的环境变量,可以看到没有Qt相关的…...
武汉流星汇聚:亚马逊跨境电商龙头,市场份额稳固,服务品质卓越
在全球跨境电商的版图上,亚马逊无疑是一颗璀璨的明星,以其庞大的市场规模、卓越的用户体验和强大的品牌影响力,稳居行业龙头地位。即便在诸多新兴跨境平台竞相崛起的背景下,亚马逊依然以其独特的优势,保持着难以撼动的…...
我出一道面试题,看看你能拿 3k 还是 30k!
大家好,我是程序员鱼皮。欢迎屏幕前的各位来到今天的模拟面试现场,接下来我会出一道经典的后端面试题,你只需要进行 4 个简单的选择,就能判断出来你的水平是新手(3k)、初级(10k)、中…...
opecv c++计算图像的曲率
公式 κ z x x ⋅ z y 2 − 2 ⋅ z x ⋅ z y ⋅ z x y z y y ⋅ z x 2 ( z x 2 z y 2 1 ) 3 / 2 \kappa \frac{z_{xx} \cdot z_y^2 - 2 \cdot z_x \cdot z_y \cdot z_{xy} z_{yy} \cdot z_x^2}{(z_x^2 z_y^2 1)^{3/2}}\newline κ(zx2zy21)3/2zxx⋅zy2−2⋅zx…...
鸿蒙 IM 即时通讯开发实践,融云 IM HarmonyOS NEXT 版
融云完成针对“纯血鸿蒙”操作系统的 SDK 研发,HarmonyOS NEXT 版融云 IM SDK 已上线,开发者可在“鸿蒙生态伙伴 SDK 市场”查询使用。 发挥 20 年通信行业技术积累和领创品牌效应,融云为社交、娱乐、游戏、电商、出行、医疗等各行业提供专业…...
【全国大学生电子设计竞赛】2022年D题
🥰🥰全国大学生电子设计大赛学习资料专栏已开启,限时免费,速速收藏~...
【优秀python案例】基于python爬虫的深圳房价数据分析与可视化实现
现如今,房价问题一直处于风口浪尖,房价的上涨抑或下跌都牵动着整个社会的利益,即便是政府出台各种政策方针也只能是暂时抑制楼市的涨势,对于需要买房的人来说,除了关注这些变化和政策外,还有一个非常头疼的…...
vscode安装与配置本地c/c++编译调试环境
目录 (1)安装vscode和常用插件 1.下载安装vscode 2.安装常用插件 (2)本地安装和配置编译器 1.安装编译器 2.vscode配置编译器 第1种:全局配置 第2种:为当前项目个性化配置 (3ÿ…...
PCIe学习笔记(15)
设备就绪状态 (Device Readiness Status,DRS)消息 (Device Readiness Status (DRS) 是PCIe规范中引入的一种机制,旨在改进设备初始化和就绪状态的检测与报告。 在以往的PCIe版本中,系统通常依赖于固定的超时机制来判断设备是否已…...
Rust中的特殊类型所占的内存大小
可以使用std::mem:size_of获取类型大小: use std::mem::size_of;struct Journal(String, u32); trait Summary {} impl Summary for Journal {}fn main() {println!("普通结构体相关:");println!("{}", size_of::<&Journal&…...
【深度学习】变分自编码器 VAE,什么是变分?(1)
文章目录 1. 变分自编码器 VAEVAE的基本概念VAE的数学原理编码器解码器目标函数训练过程代码示例未来发展2. 变分推断变分推断(Variational Inference)变分推断的基本概念变分推断的目标变分下界(Evidence Lower Bound, ELBO)最大化变分下界变分推断的步骤3. 必读内容1. 变…...
宏编程:C++宏、Rust宏和Lisp宏比较
根据simondobson两篇文章(1、2),总结比较一下C宏 Rust宏和Lisp宏: Rust 宏:Rust 有两种类型的宏: 声明性宏:这些模式匹配参数来生成代码。 过程宏:这些宏执行从代码到代码的更一般…...
ChatGPT协助撰写研究论文的11种方法【全集】
学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 当我们使用 ChatGPT 时,原本那些需要花费数小时、数天、有时甚至更长时间的任务现在只需几分钟甚至更短时间。 今天的分享,我们将谈谈 ChatGPT 在研究论文方面可…...
PEP 8 – Python 代码风格指南中文版(四)
何时使用尾随逗号 尾随逗号通常是可选的,但在创建一个只有一个元素的元组时是必须的。为了清晰起见,建议使用(技术上多余的)括号将其包围起来: # 正确的: FILES (setup.cfg,)# 错误的: FILES setup.cfg, 当尾随逗号…...
基于深度学习的适应硬件的神经网络
基于深度学习的适应硬件的神经网络设计旨在最大限度地利用特定硬件平台的计算和存储能力,提高模型的执行效率和性能。这些硬件包括图形处理单元(GPU)、张量处理单元(TPU)、现场可编程门阵列(FPGA࿰…...
上传音频文件
思路 1、自定义Upload 重点:<input ref{inputRef} type"file" accept{accept} onClick{e > e.stopPropagation()} onChange{uploadFile} multiple{multiple}/> 使用input标签设置type是file,将input元素通过forwardRef暴露给父组件&…...
Linux之jdk离线安装
下载地址 一、linux安装jdk8 1、上传,解压 cd /usr/local/java tar -zxvf jdk-10.0.2_linux-x64_bin.tar.gz2、修改配置 vim /etc/profile #在/etc/profile文件后面加上如下配置 export JAVA_HOME/usr/local/java/jdk-10.0.2 export JRE_HOME/usr/local/java/jd…...
JVM结构、架构与生命周期总结
【1】JVM结构 不同厂商的JVM产品 : 厂商JVMOracle-SUNHotspotOracleJRocketIBMJ9 JVM阿里Taobao JVM HotSpot VM是目前市面上高性能虚拟机的代表作之一。它采用解释器与即时编译器并存的架构。 在今天,Java程序的运行性能早已脱胎换骨,已…...
做网站基本费用大概需要多少/南京百度推广开户
背景:1.在数据库中有一个通知表可以看到其中的gmt_create、notifier_name、outer_title这三个字段是有下划线的2.这张表对应的实体类为public class Notification {private Long id;private Long notifier;private Long receiver;private Long outerId;private Inte…...
做网站和做推广有什么区别/游戏代理加盟
本文实例讲述了python连接oracle数据库的方法,分享给大家供大家参考。具体步骤如下:一、首先下载驱动:(cx_Oracle)http://www.python.net/crew/atuining/cx_Oracle/不过要注意一下版本,根据你的情况加以选择。二、安装:…...
百度推广图片/福州360手机端seo
一:CvMat* cvInitMatHeader( CvMat* mat, int rows, int cols, int type,void* dataNULL, int stepCV_AUTOSTEP ); mat 指针指向要被初始化的矩阵头. rows 矩阵的行数. cols 矩阵的列数. type 矩阵元素类型. data 可选的,将指向数据指针分配给矩阵头. …...
wordpress免费插件下载/郑州网站关键词排名技术代理
BDLocation类,封装了定位SDK的定位结果,在BDLocationListener的onReceive方法中获取。通过该类用户可以获取error code,位置的坐标,精度半径等信息。具体方法请参考类参考。 获取error code: public int getLocType (…...
济南做网络安全的公司/手机网站怎么优化
2019独角兽企业重金招聘Python工程师标准>>> 权声明:本文为博主原创文章,未经博主允许不得转载。 一、使用CM添加服务的方式安装Oozie 如果在创建Oozie数据库时失败,且提示数据库已存在,如下图,则可能是之前…...
css不规则网站导航怎么做/北京网站维护公司
运行结果附图 在此把本周一课上的操作简要记录: 首先做一些基本的配置,启动服务的准备工作: 首先启动三个docker docker start master docker attach master docker start slave1 docker attach slave1 docker start slave2 docker attach sl…...