版本控制发展历程:
1.本地版本控制(复制文件)、rcs(打补丁,补丁记录文件变更内容)
2.集中化版本控制系统(CVCS,集中管理服务器,服务器宕机,无法提交和下载;服务器磁盘损坏,数据直接丢失)
3.分布式版本控制系统(DVCS,将整个代码仓库镜像到本地)
git与已有版本控制的差异:
1.直接记录快照而非差异比较,变化了记录快照,没变化,指向原有快照链接;而已有版本控制只记录每次文件变化内容。
2.几乎所有操作都是本地执行,本地有完整库,可以随时回退版本而不需要联网进行回退;可以随时提交更新到本地库,有网之后再提交到远程库。
3.验证数据完整,保证每次数据变化都能记录。
git内文件的三种状态(已提交committed,已修改modified,已暂存staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。
Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存区域,以及本地仓库。
每个项目都是一个本地仓库,本地仓库保存了该项目的所有版本数据;从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从 Git 本地仓库中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。
基本的 Git 工作流程如下:
1.在工作目录中修改某些文件。
2.对修改后的文件进行快照,然后保存到暂存区域。
3.提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。
所以,我们可以从文件所处的位置来判断状态:如果是 Git 目录中保存着的特定版本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。
工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区。而所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。