当前位置: 首页 > 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教程

http://www.lryc.cn/news/232851.html

相关文章:

  • android 数独小游戏 经典数独·休闲益智
  • GAT里面的sofamax函数的实现:
  • Idea 编译SpringBoot项目Kotlin报错/Idea重新编译
  • 【Qt之QWizard问题】setPixmap()设置logo、background、watermark无效不显示解决方案
  • mysql 设置远程登录
  • ES的索引概念
  • text/xml和application/xml
  • 鸿蒙4.0正式版升级机型
  • 架构开发与优化咨询和实施服务
  • react hook ts 实现 列表的滚动分页加载,多参数混合混合搜索
  • Java应用如何不改代码,调整窗口大小
  • 汽车 CAN\CANFD数据记录仪
  • Kafka中topic(主题)、broker(代理)、partition(分区)和replication(副本)它们的关系
  • Mysql字符串类型编码问题
  • LabVIEW关于USRPRIO的示例代码
  • 【深度学习实验】网络优化与正则化(六):逐层归一化方法——批量归一化、层归一化、权重归一化、局部响应归一化
  • 低代码编辑平台后台实现
  • c++汉诺塔问题
  • 前端---CSS的样式汇总
  • android适配鸿蒙系统开发
  • golang学习笔记——select 判断语句
  • FLMix: 联邦学习新范式——局部和全局的结合
  • 为什么嵌入式没有35岁危机?
  • PostgreSQL设置主键从1开始自增
  • Vue数据绑定
  • js写轮播图,逐步完善
  • 算法-链表-简单-相交、反转、回文、环形、合并
  • 【500强 Kubernetes 课程】第3章 运行docker容器
  • Python中表格插件Tabulate的用法
  • 缺陷分级(过程质量bug分级)