前言:
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 很多 Freedesktop 的项目迁移到了 Git 上。
版本控制系统分类说明
版本控制系统可以分为三类:
第一类:本地版本控制系统
第二类:集中式版本控制系统
第三类:分布式版本控制系统
本地版本控制系统:
本地版本控制系统较容易理解,本地版本控制系统不涉及多人协作开发,项目中所有的文件只能是作者才能够编辑和修改。
集中式版本控制系统:
版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟。而且如果中央服务器宕机,那么所有人将无法工作
发布式版本控制系统:
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。远端的服务器宕机也不要紧,将任意一个本地的版本库拷贝到远端服务器上就是
实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
Git分布式版本控制系统本地版本库解析
本地版本库分为:工作区和.git版本库两个部分,而在版本库中又有暂存区和对象库,对象库实质上就是本地版本库
假设此时在个人电脑上已经创建了一个workspace工作区,且已经安装了git,创建了.git版本库。
如果工作目录中有文件需要修改的话,那么git会先保存源文件,将工作目录的文件先创建成文件对象,保存在对象库中。但是对象库中的文件名为原文件对应的哈希码的值。工作目录中的文件添加到对象库里面的过程分为两个部分,第一个部分是暂存,第二个部分是提交。
暂存就是将工作目录中的所有的文件,与对象库中的以哈希码为文件名的文件进行一一对应。这个索引就是暂存区,可以想象为源文件与对象文件的映射。
那么提交就是将索引的对象块也保存在对象库中,此时图中指向对象库中的索引块的圆圈就是branch分支,分支就是一个版本控制系统非常重要的概念,因为分支的存在,使得项目版本的回退十分方便。那么一旦我们提交之后,就会在对象库中生成一颗树对象。
如果此时,文件的代码修改了,那么就会在对象库中再创建一个以哈希码为文件名的文件,且索引块指向新创建的文件对象。但是此时第一次提交的树对象并没有发生变化。
如果第二次提交,会再次创建一棵树。
那么如果每次文件变化就提交,变化就提交,就会形成一个链式的树对象。那么那个圆圈就是反应哪个版本提交的内容。因此,如果这个圆圈指向了哪个树对象,当前的工作目录的版本就回退到哪个版本。默认情况下,这个branch指向的是最新版本的树对象,如果现在想让工作目录为第二版,那么这个圆圈会指向第二版的树。这就是git的基本工作方式。
git的基本使用流程
Git创建本地版本库
1 1:yum install -y git #如果想一次性全部安装git的工具,安装这个git-all.noarch 就ok了 2 3 2:mkdir myproject # 创建一个目录作为本地工作目录 4 5 3:cd myproject; git init # 在工作目录中初始化仓库 6 7 4:vi README # 创建一个README文件 8 9 5:git add README # 将README文件添加到缓存中 或者 git add . # 将当前工作目录都添加到暂存 10 11 6:git config --global user.name \'yhy\' 12 git config --global user.email \'yhy@1.com\' # 在提交前指定全局的提交者的信息 13 14 git config -l # 查看git的配置信息 15 16 cat ~/.gitconfig # 会在用户的家目录下生成一个.gitconfig文件 17 18 7:git commit -m "v0.0.1" # 将暂存中的提交到git仓库
Git配置文件说明
git的配置文件说明(三级配置) git config, 每一次仓库的提交都要给出两个配置文件
仓库特有:工作目录/.git/config
全局级别:~/.gitconfig (使用--global)
系统级:/etc/git/gitconfig(使用--system)