当前位置: 免费硬盘 >> 免费硬盘优势 >> Git系列Git基本概念
版本控制系统是一种帮助软件开发者实现团队合作和历史版本维护的软件,一个版本控制系统应具备以下列出的这几个基本功能:
允许开发者并发工作;不允许一个开发者覆写另一个开发者的修改;保存所有版本历史。版本控制系统可以分为如下两类:
集中式版本控制系统;去中心式(分布式)版本控制系统。Git是一种分布式版本控制系统。在这一章里,我们将着重介绍分布式版本控制系统,特别是重点介绍Git。
分布式版本控制系统集中式版本控制系统是用一个中央服务器存储所有文档并在此中央服务器上实现团队合作,此种系统的主要弊端在于中央服务器可能发生的单点故障:如果中央服务器不幸宕机一小时,那么这一小时内就完全不能合作开发了。此种弊端能导致的最糟糕的情况是,如果中央服务器在成功备份之前完全崩溃,那么中央服务器中所存储的此项目的所有历史版本都将丢失。这时,就该考虑一下分布式的版本控制系统了。
分布式版本控制系统中的客户端不仅可以查验项目目录的最新快照,而且可以镜像整个仓库。如果服务器宕掉了,任何一个客户端存储的仓库镜像都能作为备份用来恢复。每一次查验都会形成一个仓库的完整备份。Git并不依赖于中央服务器,这样开发者就能在离线情况下也进行各种操作。开发者能够在离线情况下进行提交、创建分支、查看日志等操作,只有要公布自己的变更或者获取最新的变更版本时才需要连接网络。
Git的优势免费且开源Git是遵循GPL开源许可的发行软件,在整个互联网上都可以免费获取。你可以用Git来管理财产相关工程而不用花一分钱,而且因为它是开源的,你还可以下载源码按自己的需求对它进行改造。
快捷轻便因为绝大多数操作都可以在本地完成,这让速度得到了很大的提升。Git并不依赖中央服务器,这就是为什么没有必要每个操作都得和远端服务器交互的原因。Git的核心部分是用C语言写成的,这避免了使用更高级语言造成的运行时间上的浪费。尽管Git镜像了整个仓库,客户端的数据量仍然很小,这很好地说明了Git在客户端压缩存储数据的效率有多高。
默认的备份当存在很多份镜像复制时,数据丢失的可能性就大大减小了。任何客户端上的数据都是仓库的镜像,这些数据在系统崩溃或硬盘损毁时都可以用来恢复。
安全Git使用一种叫做安全散列算法(SHA1)的加密方法去命名并识别数据库中的对象。每个文件和每次提交都会加上校验码供验证,每次取出数据也都得使用校验码校验。这意味着在不了解Git的情况下,开发者不可能成功进行修改文件数据、提交信息或者其他会改变Git项目数据库的操作。
硬件资源要求不高在使用集中式版本控制系统时,需要的中央服务器必须足够强大以支撑团队所有成员的请求。对于小型开发团队来说,这个问题不难解决,但是如果团队规模不断增大,服务器的硬件限制就会成为瓶颈。在分布式版本控制系统中,开发者只有在推出(push)或拉取(pull)修改时才需要连接服务器,所有负担较重的工作都在客户端这边完成,所以服务器的硬件条件就可以从简规划。
更简单的分支管理集中式版本控制系统使用一种简单的复制机能,如果我们在其中创建一个分支,那么该分支会将项目所有代码拷贝在新的分支中,此方法效率不高且颇费时间,而且在集中式版本控制系统中删除和合并分支都很复杂且耗时长。但是分支管理在Git中容易多了,在Git中创建、删除和合并分支均只会花费很少的时间。
分布式存储系统中的术语本地库(LocalRepository)所有版本控制系统工具都会提供个人工作空间,在其中对复制下来的工程项目进行操作,开发者在自己的个人工作空间中做出改动然后提交,这些改动也就成为了项目仓库的一部分。Git更进一步为开发者们提供整个仓库的私人复制本,开发者们可以对这个仓库进行任何操作,比如增加文件、删除文件、移动文件、提交修改等。
工作目录、暂存区或索引(WorkingDictoryandStagingAaorIndex)工作目录即文档被拉取或创建后所在的目录位置。在集中式系统中,开发者们通常做出修改然后将更改项直接提交给仓库。Git不同,Git不会追踪每次每个被修改的文档,不论何时你提交了一个操作,Git都会搜寻暂存区现有的文档,不是所有被修改的文档而是只有暂存区现存的文档会被纳入考虑。
让我们来看看Git的基本工作流:
第一步——在工作目录下修改一个文档;第二部——将此文档加入暂存区;第三步——进行提交操作,此操作从暂存区将文档移入本地库中,完成推出(push)的操作后,此变动就永久保存在了Git仓库里了。文章配图如果你修改了两个文件,sort.c和search.c,并且你想为这两次修改分别进行两次提交,这时,你可以先将一个文件添加进暂存区再提交,然后按这种方式处理下一个文件。操作示例如下,-m后面的参数为本次提交的说明:
#First
转载请注明:http://www.aideyishus.com/lkzp/6509.html