CVCS(集中化的版本控制系统),如SVN,12bet,有一个单一的集中管理的服务器,保存所有文件的修订版本,所有协作的人都通过客户端连接到这台服务器,12bet,取出左心的文件或者提交更新
好处:
坏处:12bet,若服务器发生故障则无法提交、无法协同工作,也有数据丢失的风险
DVCS(分布式版本控制系统),如Git,客户端并不只提取最新版本的文件快照,而是把最原始的代码仓库完整地镜像下来。
Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。
Git 并不保存文件前后变化的差异数据。实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一连接
在 Git 中的绝大多数操作都只需要访问本地文件和资源,不用连网。但如果用 CVCS 的话,差不多所有操作都需要连接网络。
在保存到 Git 之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。Git 使用 SHA-1 算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个 SHA-1 哈希值,作为指纹字符串。该字串由 40 个十六进制字符(0-9 及 a-f)组成,看起来就像是:24b9da6552252987aa493b52f8696cd6d3b00373
对于任何一个文件,在 Git 内都只有三种状态:已提交(committed)
,已修改(modified)
和已暂存(staged)
。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。
Git 管理项目时,文件流转的三个工作区域:Git 的本地数据目录,工作目录以及暂存区域。
基本的 Git 工作流程如下所示:
git-config
命令用来配置或读取相应的工作环境变量。
这些变量可以存放在以下三个不同的地方:
/etc/gitconfig
文件:若使用 git config
时用 --system
选项,读写的就是这个文件。~/.gitconfig
文件:若使用 git config
时用 --global
选项,读写的就是这个文件。.git/config
文件)仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,
使用 git config --list
命令检查已有的配置信息。也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可
想了解 Git 的各式工具该怎么用,可以阅读它们的使用帮助,方法有三:
$ git help <verb>
$ git <verb> --help
$ man git-<verb>