乐趣区

关于devops:什么是-Git-探索分布式版本控制工具

【注】本文译自:https://www.edureka.co/blog/w…
  Git 是一个收费的开源分布式版本控制系统工具,旨在疾速高效地解决从小型到大型的所有我的项目。它是由 Linus Torvalds 在 2005 年创立的,用于开发 Linux 内核。Git 具备大多数团队和开发人员所需的性能、性能、安全性和灵活性。它还用作重要的分布式版本控制 DevOps 工具
  在本文中,你将学到:

  • 为什么会有 Git?
  • Git 是什么?
  • Git 的个性
  • Git 如何在 DevOps 中施展至关重要的作用?
  • 微软和其余公司如何应用 Git

Git 的来由

  咱们都晓得“须要是所有创造之母”。同样,Git 的创造也是为了满足开发人员在 Git 呈现之前所面临的某些需要。

Git 的目标是什么?

  Git 次要用于治理您的我的项目,包含一组可能会更改的代码 / 文本文件。
  然而在进一步探讨之前,让咱们回顾一下所有无关版本控制系统(VCS)的常识,以及 Git 是如何诞生的。
  版本控制是对文档、计算机程序、大型网站和其余信息收集的变更进行治理。

VCS 有两种类型:

  • 集中版本控制系统(CVCS)
  • 分布式版本控制系统(DVCS)

集中式 VCS

  集中式版本控制系统(CVCS)应用地方服务器来存储所有文件并反对团队合作。它在单个存储库上工作,用户能够间接拜访该存储库。
  请参考下图,以更好地理解 CVCS:

  上图中的存储库批示一个地方服务器,能够是本地的,也能够是近程的,它间接连贯到每个程序员的工作站。
  每个程序员都能够应用存储库中存在的数据来提取或更新其工作站,或者能够对数据进行更改或提交到存储库中。每个操作都间接在存储库上执行。
  只管保护单个存储库仿佛很不便,但它也有一些次要毛病。其中一些是:

  • 它在本地不可用;这意味着您始终须要连贯到网络能力执行任何操作。
  • 因为所有内容都是集中式的,在任何状况下地方服务器都解体或损坏都将导致失落整个我的项目的数据。

  分布式 VCS 就是这些问题的救星。

分布式 VCS

  这些零碎不用依赖地方服务器来存储我的项目文件的所有版本。
  在分布式 VCS 中,每个贡献者都有主存储库的本地正本或“克隆”,即每个人都保护本人的本地存储库,其中蕴含主存储库中存在的所有文件和元数据。
  参考下图,您会更好了解:

  如上图所示,每个程序员都本人保护一个本地存储库,它实际上是其硬盘驱动器上的地方存储库的正本或克隆。他们能够提交和更新其本地存储库,而不会受到任何烦扰。
  他们能够通过“拉”操作应用来自地方服务器的新数据更新本地存储库,并通过本地存储库中的“推”操作影响对主存储库的更改。
  将整个存储库克隆到工作站以获取本地存储库的操作为您带来以下劣势:

  • 所有操作(推和拉除外)都十分快,因为该工具仅须要拜访硬盘驱动器,而无需拜访近程服务器。因而,您并不总是须要互联网连贯。
  • 能够在本地实现新变更集的提交,而无需解决主存储库上的数据。一旦筹备好一组变更集,就能够一次推送所有变更集。
  • 因为每个贡献者都有我的项目存储库的残缺正本,因而,如果他们心愿在影响主存储库中的更改之前取得一些反馈,则能够彼此共享更改。
  • 如果地方服务器在任何工夫解体,失落的数据能够很容易地从贡献者的任何本地存储库中复原。

  理解了分布式 VCS 之后,是时候深刻理解一下什么是 Git 了。

什么是 Git?

  Git 是一种分布式版本控制工具,它通过为开发高质量软件提供数据保障来反对分布式非线性工作流。
  Git 为用户提供了后面提到的所有分布式 VCS 工具。Git 仓库很容易找到和拜访。当您理解以下性能时,您将晓得 Git 与零碎的灵活性和兼容性:

Git 的个性

收费和开源:
  Git 是依据 GPL(通用公共许可证)的开源许可证公布的。您无需购买 Git。它是完全免费的。并且因为它是开源的,因而您能够依据须要批改源代码。
速度:
  因为您不用连贯到任何网络即可执行所有操作,因而它能够十分疾速地实现所有工作。Mozilla 所做的性能测试表明,它比其余版本控制系统快一个数量级。从本地存储的存储库中获取版本历史记录的速度可能比从近程服务器中获取版本历史记录的速度快一百倍。Git 的外围局部是用 C 编写的,这防止了与其余高级语言相干的运行时开销。
可扩展性:
  Git 具备很好的可扩展性。因而,如果未来合作者的数量减少,Git 能够轻松应答这一变动。只管 Git 代表了一个残缺的存储库,然而存储在客户端上的数据非常少,因为 Git 通过无损压缩技术压缩了所有大数据。
可靠性:
  因为每个贡献者都有本人的本地存储库,在零碎解体时,能够从任何本地存储库中复原失落的数据。您将始终领有所有文件的备份。
安全性:
  Git 应用 SHA1(平安哈希函数)来命名和标识其存储库中的对象。在签出时,每个文件和提交都通过其校验和进行校验和并检索。Git 历史记录的存储形式使得特定版本的 ID(在 Git 术语中是提交)取决于提交之前的残缺开发历史记录。一旦公布,就无奈在不被留神的状况下更改旧版本。
经济性:
  对于 CVCS,地方服务器必须足够弱小以服务于整个团队的申请。对于较小的团队来说,这不是问题,然而随着团队规模的扩充,服务器的硬件限度可能会成为性能瓶颈。对于 DVCS,除非开发人员须要推送或提取更改,否则它们不会与服务器交互。所有沉重的工作都产生在客户端,因而服务器硬件实际上非常简单。
反对非线性开发:
  Git 反对疾速分支和合并,并包含用于可视化和导航非线性开发历史的特定工具。Git 中的一个外围假如是,变更的合并频率要比写入的频率高,因为变更会在各个审阅人员之间传递。Git 中的分支十分笨重。Git 中的分支只是对单个提交的援用。借助其父提交,能够结构残缺的分支构造。
易于分支:
  应用 Git 进行分支机构治理非常简单。创立、删除和合并分支仅需几秒钟。个性分支为代码库的每次更改提供了独立的环境。当开发人员想要开始做某件事时,无论大小,他们都会创立一个新的分支。这样能够确保 master 分支始终蕴含生产品质代码。
分布式开发:
  Git 为每个开发人员提供了整个开发历史的本地正本,并将更改从一个这样的存储库复制到另一个存储库。这些更改将作为其余开发分支导入,并且能够以与本地开发分支雷同的形式合并。
与现有零碎或协定的兼容性:
  能够通过 http,ftp 或 Git 协定通过一般套接字或 ssh 公布存储库。Git 还具备并发版本零碎(CVS)服务器仿真,它能够应用现有的 CVS 客户端和 IDE 插件来拜访 Git 存储库。Apache SubVersion(SVN)和 SVK 存储库能够间接与 Git-SVN 一起应用。

Git 在 DevOps 中的作用?

  既然您晓得什么是 Git,那么您应该晓得 Git 是 DevOps 不可或缺的一部分。
  DevOps 是将敏捷性引入开发和经营过程的实际。这是一种全新的意识形态,席卷了全世界的 It 组织,促成了我的项目生命周期,进而减少了利润。DevOps 促成开发工程师和经营人员之间的沟通,独特参加整个服务生命周期,从设计到开发过程,再到生产反对。
  下图形容了 Devops 的生命周期,并显示了 Git 如何适宜 Devops。

  上图显示了 Devops 的整个生命周期,从打算我的项目到部署和监督。当治理协作者为共享存储库奉献的代码时,Git 扮演着至关重要的角色。而后提取该代码以执行间断集成,以创立外部版本并在测试服务器上对其进行测试,最初将其部署在生产环境中。
  诸如 Git 之类的工具使开发人员与经营团队之间可能进行沟通。当您开发一个领有大量协作者的大型项目时,在我的项目中进行更改时,在协作者之间进行沟通十分重要。在 Git 中提交音讯在团队之间的沟通中起着十分重要的作用。咱们所有人部署的系统内容都位于版本控制系统(如 Git)中。要在 DevOps 中取得成功,您须要在版本控制中进行所有通信。因而,Git 在 DevOps 的胜利中起着至关重要的作用。

应用 Git 的热门公司

  与市场上其余可用的版本控制工具(例如 Apache Subversion(SVN),并发版本零碎(CVS),Mercurial 等)相比,Git 更受欢迎。您能够通过上面的 Google 趋势图 来比拟 Git 和其余版本控制工具的趣味:

  在大型公司中,产品通常是由遍布世界各地的开发人员开发的。为了实现它们之间的通信,Git 是解决方案。
  一些应用 Git 进行版本控制的公司包含:Facebook、Yahoo、Zynga、Quora、Twitter、eBay、Salesforce、Microsoft 等。
  最近,Microsoft 的所有新开发工作都已蕴含在 Git 个性中。微软正在迁徙 .NET 和它的许多开源我的项目迁徙到 GitHub 上,这些我的项目都是由 Git 治理的。
  其中一个我的项目是 LightGBM。它是一种疾速、分布式、高性能的基于决策树算法的梯度加强框架,用于排序、分类等许多机器学习工作。
  在这里,通过提供速度和准确性,Git 在治理 LightGBM 的分布式版本中扮演着重要角色。

退出移动版