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

Git从入门到精通-第一章-基础概念

目录

为什么要版本控制?

版本控制系统

本地版本控制系统

集中化的版本控制系统

分布式版本控制系统 

Git是什么? 

直接记录快照

几乎所有操作都是本地执行

保证完整性

Git一般只添加数据

三种状态!

Git的三种状态

Git的三个阶段

Git基本工作流程


注:本文图文以proGit为基础

为什么要版本控制?

为了能够及时回溯项目以前的版本

版本控制系统

本地版本控制系统

RCS:保存布丁,也就是各版本修订前后的变化(有点像差分)

集中化的版本控制系统

多个客户端连接同一个服务器,取出文件或提交更新

好处是更容易管理,坏处就是这个服务器得稳定,得通过异地容灾等方法降低风险

分布式版本控制系统 

于是乎,分布式的就诞生了,客户端不再是提取当前最新版本的文件快照,而是将整个代码仓库完整的镜像下来,包括历史记录,那么即使服务器故障,我们仍可以通过镜像进行复刻

Git是什么? 

直接记录快照

其他大部分系统以文件变更列表的方式存储信息,可以将这些信息看作是一组基本文件和每个文件随时间逐步累积的差异(基于差异 delta-based )

然而Git是将数据看作是对小型文件的快照,每当提交更新或保存项目状态的时候,会为全部文件创建一个快照并保存这个快照的索引。如果某个文件没有修改,那么不会重新存储,而是保留一个链接指向之前存储的文件

Git更像是一个小型的文件系统,提供了许多以此为基础构建的超强工具 

几乎所有操作都是本地执行

在Git中大多数操作只需要访问本地文件和资源,因为在本地磁盘上就有项目的完整历史,无须从远程服务器拉回。意味着你可以随心所欲地在本地进行操作,然后等有条件了再上传服务器

保证完整性

Git中所有数据在存储前都会计算校验和,然后以校验和来引用。这意味这无法在Git不知情的情况下更改任何文件或者目录。如果你在传输中丢失信息或损坏文件,Git就能发现

Git计算校验和的机制叫做SHA-1 hash。Git数据库中保存的信息都是以文件内容的哈希值作为索引

Git一般只添加数据

一旦你提交快照到Git中,就很难丢失数据,那么我们也就没有必要担心误删了数据

三种状态!

Git的三种状态

        committed 已提交        修改了文件,但还没有保存到数据库中

        modified    已修改        对已修改文件的当前版本做了标记,使之包含在下次提交的快照

        staged.      已暂存        数据安全地保存在本地数据库中

Git的三个阶段

        工作区        对项目某个版本独立提取出来的内容。这些文件放在磁盘上供客户端使用或修改

        暂存区        暂存区是个文件,保存下次将要提交的文件列表信息,也就是“索引”

        Git仓库        保存项目的原数据和对象数据库,供计算机克隆仓库

Git基本工作流程

        1.在工作区修改文件

        2.将下次要提交的更改选择性暂存,只会讲更改部分添加到暂存区

        3.提交更新,将暂存区文件快照永久性存储到Git仓库

http://www.xdnf.cn/news/230905.html

相关文章:

  • 软件性能测试有多关键?能找出潜在问题并确保其顺利运行吗?
  • [250430] Kali Linux 存储库密钥丢失导致所有用户无法正常更新 APT
  • JavaScript:从JS的执行机制到location对象
  • 大语言模型(LLM)应用开发平台Dify详细使用
  • 系统思考:局部最优与全局失衡
  • WHAT - Tailwind CSS + Antd = MetisUI组件库
  • GEO vs SEO:从搜索引擎到生成引擎的优化新思路
  • vs2019 调试看不到std::list 中的值,
  • 上班无聊用python写一个摸鱼小游戏:数字碰撞
  • conda管理python环境
  • 2025年渗透测试面试题总结-拷打题库28(题目+回答)
  • 前端跨域问题详解:原因、解决方案与最佳实践
  • Doris索引机制全解析,如何用高效索引加速数据分析
  • PCB设计工艺规范(一)概述
  • 树莓派智能摄像头实战指南:基于TensorFlow Lite的端到端AI部署
  • Docker进入MySQL之后如何用sql文件初始化数据
  • 阿里云服务迁移实战: 07-其他服务迁移
  • Learning vtkjs之ImageStreamline
  • 【Fifty Project - D21】
  • w314基于java无人超市管理系统设计与实现
  • 【数据库原理及安全实验】实验五 数据库备份与恢复
  • 短视频矩阵系统贴牌开发实战:批量剪辑文件夹功能设计与实现
  • mybatis-plus 枚举实现模版,导入,导出
  • JVM——Java的基本类型的实现
  • 【ArcGISPro学习笔记】布局输出时图例总是有省略号怎么办?
  • 大连理工大学选修课——机器学习笔记(1):概述
  • 【c++】【STL】list详解
  • Laravel + Vue 3 (Vite、TypeScript) SPA 设置全攻略
  • 在Windows系统上如何用Manifest管理嵌入式项目
  • SVTAV1 编码函数 svt_aom_is_pic_skipped