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仓库

相关推荐
李少兄1 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
先跑起来再说7 小时前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
承渊政道10 小时前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee
Doro再努力10 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
摇滚侠13 小时前
MAC IDEA GIT 提交区显示了几个不存在的目录
git·idea
城东14 小时前
Git使用[远程仓库远端的head比本地和提交的head旧,其他人拉不到最新代码]
git·head·远程仓库远端·比本地和提交的head旧·其他人拉不到最新代码
何中应1 天前
使用SSH地址拉取远程仓库代码报下面的错误
git
何中应1 天前
Git本地仓库命令补充
git
sun0077001 天前
执行repo sync -c -d -j4以后,提交未git push的代码看不到了。要怎么恢复?
git
胖虎11 天前
Git 一个本地仓库同时推送到两个远程仓库(详细教程)
git·多远程仓库·双远程仓库·git双远程·git备份