认识Git的工作区、暂存区与版本库

 使用 git init 命令在 gitcode 文件夹下创建如下图所示的Git仓库。现在思考这样一个问题:gitcode目录下创建的README文件可以直接被git管理和追踪吗?

image-20230718185643466
 答案是否定的,因为只有 Git 本地仓库中的文件才可以被版本控制。什么?难道当前的 gitcode 文件夹不是 Git 的本地仓库吗。为了理解这个问题,我们需要理解 Git 的工作区、暂存区与版本库的区别。

🎯[概念梳理]

  • 工作区:即电脑上你要写代码或文件的目录,例如上面的 gitcode 文件夹
  • 版本库:又名仓库,英文名 repository 。工作区有⼀个隐藏目录 .git ,它不算工作区,而是Git的版本库。这个版本库里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”
  • 暂存区:英文叫stage或index。⼀般存放在 .git 目录下的index文件(.git/index)中,我们把暂存区有时也叫作索引(index)。

​ 通过上面的梳理,我们明白了,gitcode 本质上是工作区,而 .git 才是真正的版本仓库。我们要想管理我们的代码,就需要将相应的代码添加到版本库中。

 新的问题随之而来:我们可以直接将README文件移动到 .git 文件夹中,从而交给git管理吗?这种行为是万万不可取的,.git 文件夹中是不允许进行任何手动修改的,避免git仓库的结构被人为破坏。

image-20230719184040269

 为了让README文件被版本库管理,我们需要进行一些额外的操作将工作区中的文件添加到版本库中

  1. add操作:将工作区的修改(包括新增、删除、修改)内容保存到版本库的暂存区中
  2. commit操作:将暂存区中的内容添加到master分支下

 那么它具体是如何实现的呢?其实在版本库中还有一个对象库 object,工作区中的修改内容会以 git对象 的形式写入到对象库中,对git对象的管理就可以实现对文件版本的控制。

  1. 进行add操作时,会将工作区中的修改内容以git对象的形式写入到 对象库 中。而暂存区中存放的是对应git对象的 索引,因此暂存区是比较轻量的
  2. 进行commit操作时,写入master分支的也是对应git对象的索引,因此master分支也是比较轻量的

口说无凭,我们从文件层面上来认识各个分区:
在这里插入图片描述

  • index:暂存区,git add后首先会将 git 对象的索引添加到暂存区中
  • HEAD:指向当前的工作分支最新提交,默认为 master 分支
  • objects:对象库,管理着一个个 git 对象,其存放的形式如下在这里插入图片描述

 通过本篇博客的学习,大家已经掌握了Git的基本原理,接下里的博客中将为大家讲解 Git 的各种使用方法

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

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

相关文章

TableConvert-免费在线表格转工具 让表格转换变得更容易

在线表格转工具TableConvert TableConvert 是一个基于web的免费且强大在线表格转换工具,它可以在 Excel、CSV、LaTeX 表格、HTML、JSON 数组、insert SQL、Markdown 表格 和 MediaWiki 表格等之间进行互相转换,也可以通过在线表格编辑器轻松的创建和生成…

【Spring使用三级缓存解决循环依赖的过程】

testService1和testService2相互依赖 当Spring创建testService1对象时,它会先从一级缓存中查找是否存在testService1的实例。如果缓存中不存在testService1实例,它将继续查找二级缓存中是否存在testService1。如果二级缓存中也不存在testService1实例&…

【SpringCloud微服务--Eureka服务注册中心】

SpringCloud微服务全家桶学习笔记【持续更新】 gitee仓库 内容:SpringCloud SpringCloud alibaba 技术栈:Java8mavengit,githubNginxRabbitMQSpringBoot2.0 微服务架构概述 微服务架构是一种架构模式,它提倡将单一应用程序划…

分布式多级缓存

例子(测试环境) 项目结构图 运行反向代理服务器也就是负责反向代理到三个nginx的nginx,该nignx也负责前端页面的跳转。 该nginx的conf为下: 突出位置就是该nginx需要反向代理的其他nginx的IP和端口。 Lua语法 linux安装Lua #安装lua环境 …

Uniapp中使用uQRCode二维码跳转小程序页面

下载插件 uQRCode官网地址 引入插件 文件如下 //--------------------------------------------------------------------- // github https://github.com/Sansnn/uQRCode //---------------------------------------------------------------------let uQRCode = {};(functio…

Python--用户输入与While循环

1、input() 函数的工作原理 input() 函数让程序暂停运⾏,等待⽤户输⼊⼀些⽂本。获取⽤户输⼊ 后,Python 将其赋给⼀个变量,以便使⽤。 message input("Tell me something, and I will repeat it back to you: ") print(message…

fabic如何将绘图原点移到画布中心

情况说明: fabic默认绘图原点为left:0,top:0 后端给我的内容是按照x,y返回的,需要将坐标系移到fabic画布的中心位置,找了下网上合适的砖,想一句命令直接设置,结果没有。…

改造el-dropdown ,实现多选效果,且当选项只剩下一个时,不允许取消

实现效果 实现代码 其中virtual-list是使用的插件,使得下拉数据多的时候,不会出现卡顿 正常不使用虚拟列表的时候可以这样写 <el-dropdown-menu slot"dropdown"><el-dropdown-item v-for"i in item.optionList" :key"i.id" :command&…

前端验证弱密码代码记录

password: [{ required: !props.id? true:false , trigger: blur,validator: (rule, value, callback, source, options) > {const pwdRegex new RegExp((?.*[0-9])(?.*[a-zA-Z])(?.*[^a-zA-Z0-9]).{8,30})if (!props.id && value ) {callback(new Error(请输…

前端面试合集(三——浏览器)

浏览器的页面渲染 1.浏览器是如何渲染页面的&#xff1f;2. 什么是reflow(重排&#xff09;&#xff1f;3. 什么是repaint(重绘&#xff09;&#xff1f;4.为什么transform效率高&#xff1f; 1.浏览器是如何渲染页面的&#xff1f; 当浏览器的网络线程收到HTML文档之后&#…

AI已经改变游戏规则,新环境下如何用好这一新利器,提升开发团队的生产力

ChatGPT 4在今年3月刚刚发布&#xff0c;但在短短几个月内&#xff0c;它已经开始改变多个行业开发材料和资产的方式。 作为Perforce Software的首席技术官&#xff0c;我密切关注着新兴技术如何重新塑造和定义既定的工作步骤与流程。在我近30年的软件开发经验中&#xff0c;很…

【再识C进阶2(下)】详细介绍指针的进阶——利用冒泡排序算法模拟实现qsort函数,以及一下习题和指针笔试题

前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;正在学习C&#xff0c;数据结构等&#x1f440; &#x1f493;作者主页&#xff1a;加油&#xff0c;旭杏的主页&#x1f440; ⏩本文收录在&#xff1a;再识C进阶的专栏&#x1…

探究Nginx应用场景

1 静态资源 Nginx是一个流行的Web服务器和反向代理服务器&#xff0c;它可以用于托管静态资源。下面是一个简单的案例&#xff0c;展示了如何使用Nginx来提供静态资源。 假设你有一个名为example.com的域名&#xff0c;并且你希望使用Nginx来托管位于/var/www/html目录下的静…

CopyOnWriteArrayList源码分析

其中唯一的线程安全 List 实现就是 CopyOnWriteArrayList。 特点 由于读取操作不会对原有数据进行修改&#xff0c;因此&#xff0c;对于每次读取都进行加锁其实是一种资源浪费。相比之下&#xff0c;我们应该允许多个线程同时访问 List 的内部数据&#xff0c;毕竟对于读取操…

MeterSphere压测,出现HttpHostConnectException

现象&#xff1a;MeterSphere更换压力机后&#xff0c;压测出现出现HttpHostConnectException 解决方案&#xff1a; net.ipv4.tcp_tw_reuse默认是0或者2&#xff0c;更改为1 net.ipv4.tcp_tw_reuse&#xff0c;表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连…

第二十一章 Classes

文章目录 第二十一章 ClassesClasses类名和包类定义的基本内容 第二十一章 Classes Classes 类定义并不是 ObjectScript 的正式组成部分。相反&#xff0c;可以在类定义的特定部分中使用 ObjectScript&#xff08;特别是在方法定义中&#xff0c;可以在其中使用其他实现语言&…

vue 项目代码混淆配置(自定义插件适用)带配置项注释

文章目录 vue 项目代码混淆配置&#xff08;自定义插件适用&#xff09;带配置项注释一、概要二、混淆步骤1. 引入混淆插件2. 添加混淆配置3. 执行代码混淆 vue 项目代码混淆配置&#xff08;自定义插件适用&#xff09;带配置项注释 一、概要 本文章适用 vue-cli3/webpack4 …

企业架构LNMP学习笔记41

企业架构缓存中间件分布式memcached&#xff1a; 学习目标和内容&#xff1a; 能够理解描述网站业务访问流程 能够理解网站业务的优化方向 能够描述内存缓存软件Memcached的作用 能够通过命令操作Memcached 能够安装php的memcached扩展extension 能够实现session存储到m…

拥有十亿美元的财富,靠外汇交易发家,还与查尔斯王子是知交

Urs Schwarzenbach&#xff08;乌尔斯施瓦岑巴赫&#xff09;是英国上流社会最有钱的亿万富豪之一。他曾经轰动一时的专业交易员这个身份&#xff0c;已经越来越少被提起。如今你问很多外汇交易者&#xff0c;他们可能都会摇头称不知道这个人吧。 如果提到瑞士最大的传统货币兑…

时序分解 | MATLAB实现基于SSA奇异谱分析的信号分解分量可视化

时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 奇异谱分解奇异谱分析SSA 可直接替换txt数据运行 Matlab 1.包含3D分解效果图 频谱图等…