码农之路恒久远,学习向上是真谛啊!在学习的过程中,相信大家或多或少都接触到Git这个东东。它到底是什么呢,有什么作用呢,为什么它会那么火呢?带着这些一连串的疑问,决心去揭开它的庐山真面目。
在软件开发过程中,一个团队强调的是合作和效率。那怎样才能很好的做到这些呢,这时候资源*控制这个概念就出来了,它的思想就是将资源(project)布署在一个*服务器,每个开发者都可以去里面实时的获取最新资源样本,本地处理后再提交到*服
务器以致于达到一个协同开发,提高效率。这种开发工具目前有很多了,例如:VCS、SVN、Perforce、Git等等。至于选择哪一种就要看实际情况了,这不是文章的重点所以不去详细它了。
首先要知道,版本控制概念可分为两种。集中式*处理系统和分布式管理系统。以上列举的VCS、SVN、Perforce都属于前者集中式*处理系统,而Git以及Bitkeeper和 Mercurial则属于后者。那么两者有什么不同呢,顾名思义,集中式*处理就是将资
源共享在远程服务端,每个开发者都必须依赖这个*服务器,每个本地端只映射有当前的版本状态。每次牵涉到版本管理的工作(提交、删除、修改。查log以及查看版本间差别等等)都必须在有网(局域网也算)的状态下才能够完成。所以这种方式局限性和
操作简便性及安全性就可想而知了。然而分布式管理系统就很好的解决了这些,简单来说,对于服务器端的版本系统在各自的本地端都可以完完整整创建一份独立的。这样一来关于牵涉到版本管理的操作都可以在本地离线的状态下都可以完成了,其灵活性及便捷
性就不言而喻了。另外,我们在使用SVN或者接下来使用Git时候在本地project中会发现分别有一个.svn和.git文件。前者保存了当前版本的最新样本,其存储文件是根据文件名来区别,实则就是在克隆,而后者,则存储了project所有版本信息,存储的方式也高
效于SVN,它是才采用SHA-1哈希算法将文件内容转化成一个哈希值存储,所以这一块它不仅存储安全而且高效。说到这里,相信大家对Git应该有了一个初步的认识了,接下来我们一起来进一步的认清它,下面有两幅图绘制了Svn和Git的工作流程。
(图1) (图2)
对于图1SVN代表的集中式*管理系统,相信大家一看就懂,没什么好说的。对于后者Git,有几个新的点需要认清它。图2中的右边蓝色方块Local repository,就是上面所提到的Git所创建的本地仓储,里面的内容跟服务器端一样一样的,包括版本的历史
记录、tag等等所有信息。另外一个就是 图2中最下方绿色方块index,其实Git中独有的一个新的概念,被称为文件暂存区。本地每一次的添加的文件都会留有一个快照(索引标签)记录在该区。当你确定你所添加的无误之后就可以提交了,这时候被添加的文件就会
提交到本地仓储,也就是蓝色的方块Local repository中,如果发现你提交的有问题,那这时候这两个点的作用就凸显出来了,使用reset撤销命令,将状态转回到index状态,重新编辑提交。然而细心的你会发现我这本地所做的一切操作都是直接与 Local
repository 区打交道。这就是为什么你在没网的状态下任然可以工作,其次Git的操作因为大部分在本地以及资源也都在本地不需要像SVN那样需要从服务器获取,所以Git的工作效率要比SVN高多了,方便多了。处理完前面一切的编辑开发工作之后,发现提交
OK了,那这时候就可以在有网 的状态的 一次性的去提交的你所有的内容到服务器端。若果这时候,很不幸的你发现提交内容又有误想重来,那么这时候Git君的强大你就会被它给深深的折服了,无尽的后悔药,让你的开发工作妥妥的。
刚开始使用Git的时候,总是被一些杂乱的碎片概率以及相关的工具给迷惑住了。这里呢就来说明一下,首先那就是下载安装(平台区别化),直接去百度搜下Git接着下载安装msysGit即可。有一点要注重,在安装过程中有一布让你选择默认的配置工具如:命令行
工具bash和界面操作工具GUI,直接选中即可。对于Git目前最流行的服务器端就是GitHub,可以把它理解为其的代码托管站点。目前GitHub也已经有了自己的客户端,你可以直接下载使用即可,很方便的。这里也有一个地方需要注意一下,在安装GitHub客户端
之后,会附带一个命令行工具git shell,这个工具和 bash 基本差不多,使用哪一个都可以。对于Git,更多人都愿意使用其自带的命令行工具,而其自带的UI工具却不怎么提及,原因就是因为其命令行工具更好多。其实Git的界面操作工具也有很多,例如其自带的
GUI,以及TortoiseGit等等,至于选择哪一种就不用对说了。安装配置好了这些之后呢,接下来就是布署一个自己的项目到GitHub,简单的使用Git命令来体验下带给你的快感了。
更详细的介绍,接下来会给它整理出来。发现的不对的还望大家及时提出啊,共同学习进步哈!