Git 学习笔记(一)

Git 介绍

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

集中式VS分布式

    Git是最大的分布式版本控制系统,与Git相同的还有Mercurial和Bazaa等。
    集中式版本控制系统的代表就是SVN和CVS。
    这两种模式的最大不同在于版本库的存储。集中式的版本库保存在中央服务器,用户每次存取都需经过中央服务器。更新和获取都需联网下载和上传。分布式系统的版本库则保存在用户本地,几乎所有操作无需上传,本地就能完成,若要进行共享则只需向对方进行推送。实际上Git也存在服务器,只是为了让用户的推送实现离线操作 。

git组成

git 由工作区和版本库组成,版本库中又有暂存区(stage或index,位于 ".git/index" 目录下),master分支目录树(master)和对象库(objects,实际位于 ".git/objects" 目录下)

Git 学习笔记(一)_第1张图片

     工作区就是我们实际写入的文件目录,通过 git add 能将工作区的文件与objects进行关联,同时在暂存区(index | stage)中存储被关联的对象Object的ID。
    当执行提交操作 git commit时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
    当执行 git reset HEAD"命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
    我个人的理解就是工作区通过git add 来获取一个object对象,两者是引用关系,被add 的文件的状态会及时和对应的object同步。而commit指令将object的ID传送给了master,更新了master的分支目录,形成新一轮的项目版本。

理解笔记

工作区——真实写作环境
暂存区——对工作区状态的一些引用,能实时知道工作区文件与之前相比的差异化
master分支——版本时间树,保存以往提交的工作区状态,形成时间树,回溯节点能时光倒流和穿越曾经存在过的未来
把git比作电脑的话,我觉得工作区像是硬盘,暂存区就是操作系统,而master分支就是远程分布式服务器。

你可能感兴趣的:(Git 学习笔记(一))