Git概述

Git概述

分布式对集中式

要学习Git当然要从Git的官网开始:

Git官网

在这里插入图片描述
简单的翻译一下这里的英文:

Git是一个免费的开源分布式版本控制系统,它可以快速高效地处理从小型到大型的所有项目。

Git易于学习,占用空间小,性能快如闪电。它超越了像Subversion、CVS、Perforce和ClearCase这样的配置管理工具,具有像廉价的本地分支、方便的暂存区和多个工作流这样的特性。

这里的核心词是分布式,这年头,互联网行业内分布式大行其道啊,好像不提个分布式就low的不要不要的,于是理所当然的,版本管理系统当然也要是分布式的。Git宣称要用分布式版本管理系统碾压那些老旧的集中式版本管理系统。这句话如果倒退30年说出来可能会让那些软件公司大佬们笑掉大牙,然而现在,这些大佬们听到这句话只会点头称是。这中间到底发生了什么?

所谓集中式的版本管理系统就是由一个远程服务器保存所有的版本管理信息,主要特点是:

  • 各个本地PC机只需要下载有限的内容就可以工作了,工作完成后再把工作成果上传给服务器
  • 版本管理系统采用增量式设计,每个版本就是一个增量,最大限度的复用重复的内容,减少服务器空间的占用
  • 更为重要的是,我们可以在主服务器上设置各种的权限控制,让不同的用户只能操作我们想让他操作的内容。在那个年代,各大软件公司还在靠卖软件挣钱,代码也理所当然是保密的。

总之,在那个机器很值钱,代码也很值钱的年代,集中式的版本管理系统无疑是最好的选择。

集中式的版本管理系统最大的问题是什么?当然是本地PC机的功能太孱弱了,几乎是个被阉割的玩意,主要的弊端有:

  • 它离不开网络,没有网络访问服务器就没法工作
  • 它不能在本地进行版本管理,对,你没听错,谁说版本管理系统中本地端就不需要版本管理了?
  • 它不能分支管理,这个很重要

分布式的版本管理系统彻底改变了这一切,它赋予了本地完整的版本管理的功能。这正是git官网上直接在Git名称后面写下"everything is local"的原因。分布式的版本管理系统中,没有了中心节点,所有的节点都是对等的,主要特点是:

  • 各个节点都有独立的版本管理系统,几乎所有的版本管理功能都可以在本地进行。当然也可以有远程服务器,它可以起同步各个节点的作用。
  • 版本管理系统采用快照式设计,每个版本都是一个自成体系的世界
  • 廉价的分支管理,这个很重要

在我们这个年代,机器的性能已经不是大的问题了,至少对于版本管理这种系统来说,至于权限控制,随着开源思想的大行其道,权限这种事也显得不太重要了。

总之,在这个机器越来越不值钱,代码也越来越不值钱的年代,分布式的版本管理系统才是最好的选择。

分支管理

我们在前面不断地强调了分支管理的重要性,但是却没有给出解释,现在是说清楚这个问题的时候了。理论上任何版本管理系统都是线性的,因为它必须支持一个线性的时间轴,各个版本按照时间的顺序自然地连接成了一个版本的线性结构,这种结构用增量式设计也是很自然的事情。

但是分支管理意味着版本管理系统必须支持版本的树形结构,这就不简单了。集中式的版本管理系统也能支持分支管理系统,但是代价巨大,因为采用的是增量算法,它需要的分支处完整的复制一套版本库的备份。

那么Git是怎么做到廉价的分支管理的?快照式设计的核心其实就是hash算法,直接将内容映射为一个hash值,再也不用考虑什么增量了,直接比较hash值,hash值相同就意味着内容相同,就可以复用,否则就映射新的hash值。这也是Git可以宣称自己有着闪电般快速的核心秘密。

自从有了廉价快捷的分支管理,软件开发的工作流就开始百花齐放了,能够更好地适应不同的业务,不同团队。

关于分支的作用,我也不用废话,直接翻译Git官网的文字即可。

Git的特性使它与其他SCM区别开来的原因是它的分支模型。Git允许并鼓励您拥有多个本地分支,这些分支可以彼此完全独立。创建、合并和删除这些开发行只需要几秒钟。这意味着你可以这样做:

  • 平滑的上下文切换。创建一个分支来尝试一个想法,提交几次,切换回分支的位置,应用一个补丁,切换回您正在试验的位置,并合并它。
  • 基于角色的代码行。有一个分支,它总是只包含用于生产的内容,另一个分支用于将工作合并到其中进行测试,还有几个较小的分支用于日常工作。
  • 基于特征的工作流。为您正在处理的每个新特性创建新分支,以便您可以在它们之间无缝地来回切换,然后当该特性合并到您的主线中时删除每个分支。
  • 一次性实验。创建一个分支进行实验,意识到它不会工作,然后删除它——放弃这个工作——没有其他人看到它(即使在此期间您已经推送了其他分支)。

分支进行实验,意识到它不会工作,然后删除它——放弃这个工作——没有其他人看到它(即使在此期间您已经推送了其他分支)。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值