本地版本控制
RCS 在硬盘上保存补丁集(补丁是指文件修订前后的变化),通过应用所有的补丁,可以重新计算出各个版本的文件内容。

集中化版本控制
(Centralized Version Control Systems,简称 CVCS)

目的:解决不同系统上的开发者协同工作
这类系统,诸如 CVS、Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本
优点:
- 可以在一定程度上看到的其他人正在做些什么
- 管理员也可以轻松掌控每个开发者的权限
- 管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。
缺点: - 中央服务器的单点故障导致 无法协同工作,数据丢失
分布式版本控制系统
(Distributed Version Control System,简称 DVCS)
像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。

Git
CVS 是基于差异的版本控制

Git 更像是把数据看作是对小型文件系统的一系列快照

近乎所有操作都是本地执行
离线几乎可以进行任何操作,如你在飞机或火车上想做些工作,就能愉快地提交(到你的 本地 副本,还记得吗?) 直到有网络连接时再上传,而用 Subversion 和 CVS 的话, 你能修改文件,但不能向数据库提交修改
Git 保证完整性
Git 中所有的数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容
Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。
Git 一般只添加数据
三种状态
文件可能处于其中之一: 已提交(committed)、已修改(modified) 和 已暂存(staged)。
- 已修改表示修改了文件,但还没保存到数据库中。
- 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
-
已提交表示数据已经安全地保存在本地数据库中。
这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录
image.png
工作区是对项目的某个版本独立提取出来的内容
暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中
Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。
基本的 Git 工作流程如下:
1、在工作区中修改文件。
2、将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
3、提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。
配置
查看所有的配置以及它们所在的文件
$ git config --list --show-origin
设置你的用户名和邮件地址
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
快速参考
-h 选项
git add -h
