当前位置: 首页 > news >正文

Git-概念与架构

GIT-概念与架构

  • 一、背景和起源
  • 二、版本控制系统
    • 1.版本控制分类
      • 1.1 集中式版本控制
      • 1.2 分布式版本控制
    • 2.Git和SVN对比
      • 2.1 SVN
      • 2.2 GIT
  • 三、GIT框架
    • 1.工作区(working directory)
    • 2.暂存区(staging area)
    • 3.本地仓库(local repository)
    • 4.远程仓库(remote repository)
    • 5.隐藏区(stash area)
    • 6.远程仓库副本(remote repository copy)
  • 四、GIT开发工作流程
  • 总结
      • 参考

一、背景和起源

2005年之前Linux内核开发都是由非开源BitKeeper进行版本控制。Linus Torvalds为了摆脱非开源的限制问题,构建了一个与开源的并发版本系统SVN理念完全相反的版本控制系统。这个分布式的版本控制系统最后发展成了现在广泛使用的git。

二、版本控制系统

1.版本控制分类

1.1 集中式版本控制

版本库是集中存放在中央服务器,开发者使用电脑进行开发工作。每次工作都需要先从中央服务器获取代码最新版本到本地,本地修改之后需要推送到中央服务器上。

1.2 分布式版本控制

版本库没有中央服务器概念,远程仓库只是为了开发者方便交换各自的修改。每个开发者电脑上都有一个完整的版本库。每次工作不需要联网,可以进行修改、版本对比、提交代码等,只需要在联网的时候将本地版本库同步到远程仓库即可。

2.Git和SVN对比

2.1 SVN

  • SVN属于集中式版本控制系统
  • SVN需要联网才能工作
  • SVN操作需要访问中央服务器仓库,处理速度相对慢

2.2 GIT

  • GIT属于分布式版本控制系统
  • GIT不需要强制联网也可工作
  • GIT绝大部份操作都是访问本地版本库,因此处理速度快

三、GIT框架

GIT架构主要分为以下几个部份:

  • 本地工作区(working directory)
  • 暂存区(staging area)
  • 本地仓库(local repository)
  • 远程仓库(remote repository)

整体架构如下图:
在这里插入图片描述

1.工作区(working directory)

工作区就是本地工作目录,工作区包含新增文件和自己的修改内容。

2.暂存区(staging area)

暂存区是将修改提交到本地仓库前的一个过渡区域,主要是方便可以将部分修改提交的情况。工作目录下.git目录下的index文件就是暂存区内容。

  • git add命令可以将工作区内容添加到暂存区。
  • git checkout命令可以将暂存区内容覆盖工作区内容。

3.本地仓库(local repository)

版本控制系统保存在本地。工作目录下.git目录就是本地仓库内容。

  • git commit命令可以将暂存区内容添加到本地仓库。
  • git reset命令可以将本地仓库内容覆盖暂存区内容。

4.远程仓库(remote repository)

远程仓库主要是为了开发者交流修改而设置的一个中间仓库。

  • git push命令可以将本地仓库内容添加到远程仓库。
  • git pull命令可以将远程仓库内容拉取到本地仓库。

5.隐藏区(stash area)

隐藏区主要是为了将正在修改并且还没有提交的代码保存起来防止丢失,方便开发者进行多种开发任务的切换。如果遇到紧急情况,可以将当前任务的修改保存到隐藏区,然后开发者可以进行分支切换或者其他开发工作,完成紧急任务之后,可以从隐藏区恢复之前的修改继续原有开发工作。

  • git stash命令可以将工作区和暂存区内容添加到隐藏区。
  • git stash pop命令可以隐藏区内容恢复到工作区。

6.远程仓库副本(remote repository copy)

存在于本地的远程仓库的缓存。如需更新,可通过git fetch/pull命令获取远程仓库内容。使用fech获取时,并未合并到本地仓库,此时可使用git merge实现远程仓库副本与本地仓库的合并。

四、GIT开发工作流程

开发者利用git进行协作进行开发工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
    在这里插入图片描述

总结

主要介绍版本控制系统起源,git和svn简单对比,git的整体架构和开发工作流程。

参考

1.简书:GIT-概述与架构
2.Git版本管理原理
3.Git Book
4.Runoob git教程

相关文章:

Git-概念与架构

GIT-概念与架构 一、背景和起源二、版本控制系统1.版本控制分类1.1 集中式版本控制1.2 分布式版本控制 2.Git和SVN对比2.1 SVN2.2 GIT 三、GIT框架1.工作区(working directory)2.暂存区(staging area)3.本地仓库(local…...

android 数独小游戏 经典数独·休闲益智

一款经典数独训练app 标题资源下载 (0积分)https://download.csdn.net/download/qq_38355313/88544810 首页页面: 1.包含有简单、普通、困难、大师四种难度的数独挑战供选择; 记录页面: 1.记录用户训练过的数独信息&…...

GAT里面的sofamax函数的实现:

1.sofamx 公式: 2. GAT里的sofamax函数的实现: 1. 因为指数在x轴正轴爆炸式地快速增长,如果zi比较大,exp⁡(zi)也会非常大,得到的数值可能会溢出。溢出又分为下溢出(Underflow)和上溢出&#x…...

Idea 编译SpringBoot项目Kotlin报错/Idea重新编译

原因应该是一次性修改了大量的文件, SpringBoot项目启动Kotlin报错, Build Project也是同样的结果, 报错如下 Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.1.13. Build-&…...

【Qt之QWizard问题】setPixmap()设置logo、background、watermark无效不显示解决方案

问题原因: 使用QWizard或者QWizardPage设置像素图,结果设置完不显示效果。 设置示例: setPixmap(QWizard::WatermarkPixmap, QPixmap("xxx/xxx/xxx.png"));setPixmap(QWizard::BackgroundPixmap, QPixmap("xxx/xxx/xxx.png&…...

mysql 设置远程登录

为了允许远程连接到MySQL服务器,你需要采取以下步骤: 编辑MySQL配置文件: 打开MySQL的配置文件 my.cnf 或 my.ini,这取决于你的操作系统和MySQL版本。该文件通常位于MySQL安装目录下的 etc 或 etc/mysql 目录中。 添加或确保以下行…...

ES的索引概念

1. 概念:Elasticsearch(ES)是一个开源的全文搜索引擎,可以快速地存储、搜索和分析大量的结构化和非结构化数据。 2. 索引的作用:ES索引是将数据存储在Elasticsearch中的基本方式。它用于存储、搜索、分析和查询数据。…...

text/xml和application/xml

困惑 在http消息中,同样是传送xml信息,有的时候看到Content-Type的值是text/xml,有的时候值是application/xml,感到困惑。 例如,用Postman发送http消息给Tomcat中的基于JAX-WS的 web服务: 请求中传送了xm…...

鸿蒙4.0正式版升级机型

官网支持升级机型入口:HarmonyOS 4支持机型 | 华为官网 (huawei.com) 正式版 手机 HUAWEI P60 HUAWEI P60 Pro HUAWEI P60 Art HUAWEI Mate X3 HUAWEI Mate X3 典藏版 HUAWEI Mate 50 HUAWEI Mate 50 Pro HUAWEI Mate 50 RS 保时捷设计 HUAWEI Mate 50E …...

架构开发与优化咨询和实施服务

服务概述 得益于硬件平台算力的提升,汽车电子电气架构的集成度逐渐提高,从单体ECU、到功能域集成控制器、到区域集成控制器,多域融合成为了目前行业中软件工程的重要工作内容。同时,在传统控制器C代码开发的基础上,C、…...

react hook ts 实现 列表的滚动分页加载,多参数混合混合搜索

InfiniteScroll 的组件见: https://blog.csdn.net/Zhooson/article/details/134396945 search.tsx 页面 import { FC, useEffect, useState } from react import InfiniteScroll from ../../components/InfiniteScrollconst tabs [{id: 1,title: tab-1,index: 1…...

Java应用如何不改代码,调整窗口大小

最近工作上遇到了这个问题,浅浅的研究了一点,这里记录一下。 有不同意见欢迎评论区交流。 需求 项目需求: 客户已经开发好了应用,不过应用在系统上看起来有点小,希望应用能在不修改代码的情况下,通过其他…...

汽车 CAN\CANFD数据记录仪

CAN FD数据记录仪解决汽车电子数据记录与偶发性故障查找问题。 1、脱机离线记录两路CAN/CANFD通道数据 脱机离线记录两路CAN/CANFD通道数据,可记录6个月数据。每个通 道单独设置触发记录模式、触发前预记录报文个数(默认1000帧)及 过滤规则&a…...

Kafka中topic(主题)、broker(代理)、partition(分区)和replication(副本)它们的关系

在Apache Kafka中,有四个重要的概念:topic(主题)、broker(代理)、partition(分区)和replication(副本)。它们的关系如下: Topic(主题&…...

Mysql字符串类型编码问题

Q: 数据库 Redis 出现 字符比较不一致问题 A:调查后发现在数据库中使用的 account 编码为 utf8mb4_unicode_ci,而这种其实是不区分大小写的,后面我们根据情况,将编码换为 utf8mb4_bin就可以了 参考: utf8mb4_Sageice的博客-CSDN博客 MySQ…...

LabVIEW关于USRPRIO的示例代码

LabVIEW关于USRPRIO的示例代码 USRPRIO 通常以两种方式使用: 1 基于 FPGA 的编程 对于希望修改USRP上的底层FPGA代码以添加自定义DSP模块的应用,请使用USRP示例项目。它可作为构建 USRP RIO 流式处理应用程序的起点,可从“创建项目”对话框…...

【深度学习实验】网络优化与正则化(六):逐层归一化方法——批量归一化、层归一化、权重归一化、局部响应归一化

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、优化算法0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正:动量法Momen…...

低代码编辑平台后台实现

背景 之前做过一个前端低代码编辑平台,可以实现简单的移动端页面组件拖拽编辑: https://github.com/li-car-fei/react-visual-design 最近基于C的oatpp框架实现了一下后台。使用oatpp框架做web后台开发时,发现按照官方的示例使用的话&#…...

c++汉诺塔问题

汉诺塔问题是一个经典的递归问题。基本规则是,给定三个柱子和一些不同大小的盘子,开始时所有盘子按大小顺序堆叠在第一个柱子上,目的是将所有盘子移动到第三个柱子上,并且在移动过程中只能在柱子之间移动一个盘子,并且…...

前端---CSS的样式汇总

文章目录 CSS的样式元素的属性设置字体设置文字的粗细设置文字的颜色文本对齐文本修饰文本缩进行高设置背景背景的颜色背景的图片图片的属性平铺位置大小 圆角矩形 元素的显示模式行内元素和块级元素的转化弹性布局水平方向排列方式:justify-content垂直方向排序方式…...

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

JVM垃圾回收机制全解析

Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性&#xf…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

MySQL的pymysql操作

本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...