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教程

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器视觉公司怎么可能养我这闲人,连软件加密狗都用不起,项目都用盗版,为什么​?

正版价值观我是认同的,但是同行也不用软件加密狗,你让我承担过多的设备成本,终端客户不愿意承担加密狗的成本,公司更不愿意去承担,许多机器视觉公司“零元购”,机器视觉软件加密狗都用不起,项目…

51单片机应用从零开始(五)·加减乘除运算

51单片机应用从零开始(一)-CSDN博客 51单片机应用从零开始(二)-CSDN博客 51单片机应用从零开始(三)-CSDN博客 51单片机应用从零开始(四)-CSDN博客 详解 KEIL C51 软件的使用建立工程…

微机原理_10

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。) 1,将二进制数110110.01转换为十六进制为() A. 66.1H B. 36.4H C. 66.4 D. 36.2 2,一台计算机的字长是4个字节,含义是() A.能处理的最大…

基于STM32微控制器的巡线小车控制研究

## 一、引言 巡线小车是一种常见的智能车型,通常用于参加各类智能车比赛或者教学实验。本文将基于STM32微控制器对巡线小车进行控制研究,主要包括硬件设计和软件编程两个方面。通过该研究,将实现让巡线小车沿着指定轨迹巡线行驶,并…

LEEDCODE 220 存在重复元素3

class Solution { public:int getId(int a, int valuediff){// 值// return a/(valuediff1);return a < 0 ? (a ) -) / (valuediff 1) - 1 : a / (valuediff 1);}public: unordered_map<int, int> bucket;bool containsNearbyAlmostDuplicate(vector<int>&am…

基于SSM的学生疫情信息管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

多维时序 | MATLAB实现PSO-GRU-Attention粒子群优化门控循环单元融合注意力机制的多变量时间序列预测

多维时序 | MATLAB实现PSO-GRU-Attention粒子群优化门控循环单元融合注意力机制的多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-GRU-Attention粒子群优化门控循环单元融合注意力机制的多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MAT…

python趣味编程-5分钟实现一个谷歌恐龙游戏(含源码、步骤讲解)

Python 恐龙游戏是为想要学习 Python 的初学者创建的。该项目系统使用了 Pygame 和 Random 模块。 Pygame 是一组跨平台的 Python 模块,专为编写视频游戏而设计。 Python 中的 Dino Game有一个任务记录,其中包含图片文档和 Python 内容(dino.py)。 GUI 使用 pygame 库。

<MySQL> 什么是数据库索引?数据库索引的底层结构是什么?

目录 一、什么是数据库索引? 1.1 索引的概念 1.2 索引的特点 1.3 索引的适用场景 1.4 索引的使用 1.4.1 创建索引 1.4.2 查看索引 1.4.3 删除索引 二、数据库索引的底层结构是什么&#xff1f; 2.1 数据库中的 B树 长啥样&#xff1f; 2.2 B树为什么适合做数据库索…

Windows环境VSCode配置OpenCV-项目配置(二)

修改c_cpp_properties.json {"configurations": [{"name": "windows-gcc-x64","includePath": ["${workspaceFolder}/**","D:/mingw64/mingw64/include","D:/openCV_win/build/install/include","…

C语言之深入指针及qsort函数(五)(详解介绍)

C语言之深入指针 在这篇博客看不懂的可以看看这篇C语言之深入指针&#xff08;四&#xff09;在上篇博客中介绍了&#xff1a; 函数指针变量函数指针数组简易计算器的实现\ 文章目录 C语言之深入指针1 回调函数2 qsort函数的使用2.1 使用冒泡排序排序整型数组2.2 使用qsort函数…

web 前台页面内弹出框(一)

本文已经不推荐在使用了&#xff0c;有更加优秀的 &#xff0c;详情参考layui弹出层 前端当前页面编辑一些数据时&#xff0c;往往会用到弹出窗口&#xff0c;但每个页面单独修改有显得比较麻烦&#xff0c;因此&#xff0c;可以建立一个公用的方法&#xff0c;去掉用就可以了&…

分类预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多特征分类预测

分类预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多特征分类预测 目录 分类预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多特征分类预测分类效果基本描述程序设计参考资料 分类效果…

基于STM32的循迹小车项目实战

循迹小车是一种能够沿着预定路线行驶的智能小车&#xff0c;通过巡线传感器检测路面的线路&#xff0c;并根据检测结果调整行驶方向。本项目将基于STM32微控制器实现一个简单的循迹小车&#xff0c;通过学习和实践&#xff0c;帮助初学者熟悉STM32的开发流程和掌握循迹小车的实…

IntelliJ IDEA启动一个普通的java web项目的配置

原创/朱季谦 这是我很久以前刚开始用IntelliJ IDEA时记录的笔记&#xff0c;应该是五年前的一篇笔记了。正好赶上最近离职了&#xff0c;可以有比较多的时间把以前的记录整理一下&#xff0c;可以让刚接触到IntelliJ IDEA的童鞋学习如何在IntelliJ IDEA引入一个单机版的jar形式…

flutter跨端开发for Web、Windows QA (持续补充中)

flutter跨端开发for Web、Windows Q&A Q1 开发环境运行web 解决跨域问题 问题描述 : 常见于本地调试项目 本地项目 10.125.10 如图所示 请求项目接口 解决方案&#xff1a; 开发环境运行web 解决跨域问题 flutter run -d chrome --web-browser-flag "--disable-web-s…

利用OpenCV做个熊猫表情包 二

之前写了一篇 利用OpenCV做个熊猫表情包吧_Leen的博客-CSDN博客 回想起来觉得有点太弱了&#xff0c;意犹未尽&#xff0c;每次使用需要自己去手动截取人脸&#xff0c;清除黑边什么的才能使用demo去合成表情&#xff0c;于是有空的时候就改进了一下&#xff0c;让它利用open…

SpringBoot整合Quartz示例

数据表 加不加无所谓,如果需要重启服务器后重新执行所有JOB就把sql加上 如果不加表 将application.properties中的quartz数据库配置去掉 自己执行自己的逻辑来就好,大不了每次启动之后重新加载自己的逻辑 链接&#xff1a;https://pan.baidu.com/s/1KqOPYMfI4eHcEMxt5Bmt…

除了chatGPT网站外,国内有些可以使用的AI网站 文心一言 讯飞星火 豆包 通义千问 人工智能网站 AI网站

2023年随着人工智能技术的不断发展&#xff0c;AI网站如ChatGPT等越来越受到人们的关注。这些网站具有多种作用&#xff0c;可以帮助人们更方便地获取信息、解决问题&#xff0c;甚至进行创作。 首先&#xff0c;AI网站可以提供智能问答服务。与传统的搜索引擎相比&#xff0c…

ClickHouse的表引擎

1 表引擎的使用 表引擎是ClickHouse的一大特色。可以说&#xff0c; 表引擎决定了如何存储表的数据。包括&#xff1a; 数据的存储方式和位置&#xff0c;写到哪里以及从哪里读取数据。支持哪些查询以及如何支持。并发数据访问。索引的使用&#xff08;如果存在&#xff09;。是…
最新文章