直接快照,而非比较差别Git
与其余版本控制系统的主要差异在于:Git
:只关心文件数据的总体是否发生变化SVN
:只关心文件内容的具体差别(如:那些文件更新了,都更新了哪些行的什么内容)git
Git
每次提交更新时会纵览一遍全部文件的指纹信息并对文件做一快照,而后保存一个指向此次快照的索引。算法
SVN
:数据库
近乎全部操做均可本地执行Git
:绝大多数操做只须要访问本地文件和资源SVN
:差很少全部操做都须要联网安全
Git
由本地数据库,能够直接读取本地数据库进行展现。
若是要查看差别,Git
会取出一个月前的快照和当前文件作一次差别计算,没必要从新请求远程服务器。服务器
时刻保持数据完整性spa
在保存前,Git
都要进行内容的校验和计算,并将结果做为数据的惟一标识和索引。Git
使用SHA-1
算法计算校验和,经过对文件的内容或目录计算出SHA-1
哈希值,做为支付字符串:版本控制
24b9da6552252987aa493b52f8696cd6d3b00373code
实际上,全部保存在Git数据库的东西都是用此哈希值作索引,而不是靠文件名。索引
多数操做仅添加数据
一旦提交快照后就彻底不用担忧丢失数据,特别是在养成了按期推送至其余镜像仓库的习惯的话。图片
三种状态
文件流转的工做区域:
基本的Git工做流程: