目录
工作了半年多了,需要去回顾下从入职以来学的各种东西,以便遗忘,以及能够后续通过快速查找相应博客就能知道先前有碰到的问题以及解决方法,后续一有时间一定要坚持写写博客,也算是对自己的一种认可。
版本控制系统
版本控制系统是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制系统历史发展
本地版本控制系统
刚开始一般都是本地版本控制系统,即只能在本地机器上控制文件版本的迭代。其模式大致如下:
每次将变化写入到本地的版本变更信息数据库中。
集中化版本控制系统
CVCS与本地版本控制系统的最大不同是有一个单一的集中管理的服务器来保存所有文件修订版本,而协同工作的人们通过客户端连接服务器,取出最新的文件或者提交更新。其基本架构如下所示:
相对单一的本地版本控制而言,只是将本地版本控制数据库移到公共的服务器版本控制数据库上。但当中央服务器出现问题,这时会导致丢失数据。
分布式版本控制系统
DVCS在CVCS的基础上,在获取版本控制信息的时候将服务器上的对应仓库完整镜像下来,提高了因为一些外界原因导致的数据丢失问题。其基本架构如下:
git相关特性
直接记录快照
git与其他版本控制系统主要差别在于,Git只关心文件数据的整体是否发生变化。其工作模式如下:
每一个版本每个文件都会有一个快照。将变化的文件作快照后,记录在一个微型的文件系统中,每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git不会再次保存,而只对上次保存的快照做一次链接。
近乎所有操作都是本地执行
大部分操作都只需要访问本地文件和资源,不用联网。
时刻保持数据完整性
在保存到Git前,所有数据都要进行内容的校验和计算,并将此结果作为数据的唯一标识和索引。Git使用SHA-1算法计算数据的校验和,通过对文件的内容或目录结构计算出一个SHA-1哈希值,作为指纹字符串。
多数操作仅添加数据
常用的Git操作大多仅仅把数据添加到数据库。个人理解就是不会删除数据,这样保证不会因为删除数据,而导致版本回退困难。
文件的三种状态
- 已提交
- 已修改
- 已暂存
已提交表示该文件已经被安全保存到本地数据库中;已修改表示修改了某个文件,但是还没保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。
其工作流程如下:
git配置
可以通过输入git config来获取对应的配置命令详解,可以通过该命令来读取或者配置git配置。
/etc/gitconfig
系统中对所有用户都普遍适用的配置。
~/.gitconfig
用户目录下的配置文件。
.git-config
当前项目的git目录下的配置文件。
--global
配置个人配置
--system
配置所有用户配置
常用命令如下:
- 设置用户信息
git config --global user.name "xll"
- 配置文件编辑器
git config --system core.editor vim
- 配置差异性分析工具
git config --system merge.tool vim diff
- 查看配置信息
可以到相应配置文件里查看对应配置信息,如查看当前仓库配置,可以查看当前目录下的.git下的config文件;也可以通过git config --list
命令来查看对应的所有配置信息;也可以通过git config user.name
字段来查看某个特定字段的值。
获取对应指令操作方法
输入git help 指令
来获取对应的指令如何操作。
总结
- 版本控制系统经过三次大的改革:本地版本控制系统、集中化版本控制系统、分布式版本控制系统。本地版本控制系统不能协同作业,而集中化版本控制出现磁盘损坏等因素难以修复原有的所有数据,分布式版本控制系统刚好弥补了本地和集中化版本控制的这两个缺点。
- git特性。直接记录快照、近乎所有操作都是本地执行、时刻保持数据的完整性、多数操作仅添加数据。
- git三种状态。已提交、已修改、已暂存。
- git配置。系统配置使用的是
/etc/gitconfig
、单个用户使用的是~/.gitconfig
、仓库对应的是./.git/config
。也可以使用git config命令来配置相关配置信息。
- 获取git命令介绍。使用
git help
。