最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

什么是 Git? - 探索分布式版本控制工具

2021-03-17 14:20 作者:信碼由韁  | 我要投稿

【注】本文譯自:https://www.edureka.co/blog/what-is-git/

? ? Git是一個(gè)免費(fèi)的開源分布式版本控制系統(tǒng)工具,旨在快速高效地處理從小型到大型的所有項(xiàng)目。它是由 Linus Torvalds 在2005年創(chuàng)建的,用于開發(fā) Linux 內(nèi)核。Git具有大多數(shù)團(tuán)隊(duì)和開發(fā)人員所需的功能、性能、安全性和靈活性。它還用作重要的分布式版本控制 DevOps 工具

? ?在本文中,你將學(xué)到:

  • 為什么會(huì)有 Git?

  • Git 是什么?

  • Git 的特性

  • Git 如何在 DevOps 中發(fā)揮至關(guān)重要的作用?

  • 微軟和其他公司如何使用Git

Git 的來由

? ? 我們都知道“需要是一切發(fā)明之母”。同樣,Git 的發(fā)明也是為了滿足開發(fā)人員在 Git 出現(xiàn)之前所面臨的某些需求。

Git 的目的是什么?

? ? Git 主要用于管理您的項(xiàng)目,包括一組可能會(huì)更改的代碼/文本文件。

? ??但是在進(jìn)一步討論之前,讓我們回顧一下所有有關(guān)版本控制系統(tǒng)(VCS)的知識(shí),以及 Git 是如何誕生的。

? ??版本控制是對(duì)文檔、計(jì)算機(jī)程序、大型網(wǎng)站和其他信息收集的變更進(jìn)行管理。

VCS 有兩種類型:

  • 集中版本控制系統(tǒng)(CVCS)

  • 分布式版本控制系統(tǒng)(DVCS)

集中式 VCS

? ? 集中式版本控制系統(tǒng)(CVCS)使用中央服務(wù)器來存儲(chǔ)所有文件并支持團(tuán)隊(duì)協(xié)作。 它在單個(gè)存儲(chǔ)庫上工作,用戶可以直接訪問該存儲(chǔ)庫。

? ??請(qǐng)參考下圖,以更好地了解CVCS:

? ??上圖中的存儲(chǔ)庫指示一個(gè)中央服務(wù)器,可以是本地的,也可以是遠(yuǎn)程的,它直接連接到每個(gè)程序員的工作站。

? ??每個(gè)程序員都可以使用存儲(chǔ)庫中存在的數(shù)據(jù)來提取或更新其工作站,或者可以對(duì)數(shù)據(jù)進(jìn)行更改或提交到存儲(chǔ)庫中。每個(gè)操作都直接在存儲(chǔ)庫上執(zhí)行。

? ??盡管維護(hù)單個(gè)存儲(chǔ)庫似乎很方便,但它也有一些主要缺點(diǎn)。其中一些是:

  • .它在本地不可用; 這意味著您始終需要連接到網(wǎng)絡(luò)才能執(zhí)行任何操作。

  • 由于所有內(nèi)容都是集中式的,在任何情況下中央服務(wù)器都崩潰或損壞都將導(dǎo)致丟失整個(gè)項(xiàng)目的數(shù)據(jù)。

? ??分布式 VCS 就是這些問題的救星。

分布式 VCS

? ??這些系統(tǒng)不必依賴中央服務(wù)器來存儲(chǔ)項(xiàng)目文件的所有版本。

? ?在分布式VCS中,每個(gè)貢獻(xiàn)者都有主存儲(chǔ)庫的本地副本或“克隆”,即每個(gè)人都維護(hù)自己的本地存儲(chǔ)庫,其中包含主存儲(chǔ)庫中存在的所有文件和元數(shù)據(jù)。

? ??參考下圖,您會(huì)更好理解:

? ??如上圖所示,每個(gè)程序員都自己維護(hù)一個(gè)本地存儲(chǔ)庫,它實(shí)際上是其硬盤驅(qū)動(dòng)器上的中央存儲(chǔ)庫的副本或克隆。他們可以提交和更新其本地存儲(chǔ)庫,而不會(huì)受到任何干擾。

? ??他們可以通過“”操作使用來自中央服務(wù)器的新數(shù)據(jù)更新本地存儲(chǔ)庫,并通過本地存儲(chǔ)庫中的“”操作影響對(duì)主存儲(chǔ)庫的更改。

? ? 將整個(gè)存儲(chǔ)庫克隆到工作站以獲取本地存儲(chǔ)庫的操作為您帶來以下優(yōu)勢(shì):

  • 所有操作(推和拉除外)都非??欤?yàn)樵摴ぞ邇H需要訪問硬盤驅(qū)動(dòng)器,而無需訪問遠(yuǎn)程服務(wù)器。因此,您并不總是需要互聯(lián)網(wǎng)連接。

  • 可以在本地完成新變更集的提交,而無需處理主存儲(chǔ)庫上的數(shù)據(jù)。一旦準(zhǔn)備好一組變更集,就可以一次推送所有變更集。

  • 由于每個(gè)貢獻(xiàn)者都有項(xiàng)目存儲(chǔ)庫的完整副本,因此,如果他們希望在影響主存儲(chǔ)庫中的更改之前獲得一些反饋,則可以彼此共享更改。

  • 如果中央服務(wù)器在任何時(shí)間崩潰,丟失的數(shù)據(jù)可以很容易地從貢獻(xiàn)者的任何本地存儲(chǔ)庫中恢復(fù)。

? ??了解了分布式 VCS 之后,是時(shí)候深入了解一下什么是 Git 了。

什么是 Git?

? ??Git 是一種分布式版本控制工具,它通過為開發(fā)高質(zhì)量軟件提供數(shù)據(jù)保證來支持分布式非線性工作流。

? ? Git為用戶提供了前面提到的所有分布式 VCS 工具。Git倉庫很容易找到和訪問。當(dāng)您了解以下功能時(shí),您將知道 Git 與系統(tǒng)的靈活性和兼容性:

Git 的特性

免費(fèi)和開源:

? ? Git是根據(jù)GPL(通用公共許可證)的開源許可證發(fā)布的。您無需購買Git。它是完全免費(fèi)的。并且由于它是開源的,因此您可以根據(jù)需要修改源代碼。

速度:

? ? 由于您不必連接到任何網(wǎng)絡(luò)即可執(zhí)行所有操作,因此它可以非??焖俚赝瓿伤腥蝿?wù)。Mozilla 所做的性能測(cè)試表明,它比其他版本控制系統(tǒng)快一個(gè)數(shù)量級(jí)。從本地存儲(chǔ)的存儲(chǔ)庫中獲取版本歷史記錄的速度可能比從遠(yuǎn)程服務(wù)器中獲取版本歷史記錄的速度快一百倍。Git 的核心部分是用C編寫的,這避免了與其他高級(jí)語言相關(guān)的運(yùn)行時(shí)開銷。

?可擴(kuò)展性:

? ? Git 具有很好的可擴(kuò)展性。因此,如果將來合作者的數(shù)量增加,Git 可以輕松應(yīng)對(duì)這一變化。盡管 Git 代表了一個(gè)完整的存儲(chǔ)庫,但是存儲(chǔ)在客戶端上的數(shù)據(jù)非常少,因?yàn)?Git 通過無損壓縮技術(shù)壓縮了所有大數(shù)據(jù)。

?可靠性:

? ? 由于每個(gè)貢獻(xiàn)者都有自己的本地存儲(chǔ)庫,在系統(tǒng)崩潰時(shí),可以從任何本地存儲(chǔ)庫中恢復(fù)丟失的數(shù)據(jù)。您將始終擁有所有文件的備份。

?安全性:

? ? Git使用?SHA1(安全哈希函數(shù))來命名和標(biāo)識(shí)其存儲(chǔ)庫中的對(duì)象。在簽出時(shí),每個(gè)文件和提交都通過其校驗(yàn)和進(jìn)行校驗(yàn)和并檢索。Git 歷史記錄的存儲(chǔ)方式使得特定版本的 ID(在 Git 術(shù)語中是提交)取決于提交之前的完整開發(fā)歷史記錄。一旦發(fā)布,就無法在不被注意的情況下更改舊版本。

??經(jīng)濟(jì)性:

? ? 對(duì)于 CVCS,中央服務(wù)器必須足夠強(qiáng)大以服務(wù)于整個(gè)團(tuán)隊(duì)的請(qǐng)求。對(duì)于較小的團(tuán)隊(duì)來說,這不是問題,但是隨著團(tuán)隊(duì)規(guī)模的擴(kuò)大,服務(wù)器的硬件限制可能會(huì)成為性能瓶頸。對(duì)于 DVCS,除非開發(fā)人員需要推送或提取更改,否則它們不會(huì)與服務(wù)器交互。所有繁重的工作都發(fā)生在客戶端,因此服務(wù)器硬件實(shí)際上非常簡單。

?支持非線性開發(fā):

? ? Git 支持快速分支和合并,并包括用于可視化和導(dǎo)航非線性開發(fā)歷史的特定工具。Git中的一個(gè)核心假設(shè)是,變更的合并頻率要比寫入的頻率高,因?yàn)樽兏鼤?huì)在各個(gè)審閱人員之間傳遞。Git 中的分支非常輕巧。Git 中的分支只是對(duì)單個(gè)提交的引用。借助其父提交,可以構(gòu)造完整的分支結(jié)構(gòu)。

???易于分支:

? ? 使用 Git 進(jìn)行分支機(jī)構(gòu)管理非常簡單。創(chuàng)建、刪除和合并分支僅需幾秒鐘。特性分支為代碼庫的每次更改提供了獨(dú)立的環(huán)境。當(dāng)開發(fā)人員想要開始做某件事時(shí),無論大小,他們都會(huì)創(chuàng)建一個(gè)新的分支。 這樣可以確保 master 分支始終包含生產(chǎn)質(zhì)量代碼。

?分步式開發(fā):

? ? Git 為每個(gè)開發(fā)人員提供了整個(gè)開發(fā)歷史的本地副本,并將更改從一個(gè)這樣的存儲(chǔ)庫復(fù)制到另一個(gè)存儲(chǔ)庫。這些更改將作為其他開發(fā)分支導(dǎo)入,并且可以以與本地開發(fā)分支相同的方式合并。

?與現(xiàn)有系統(tǒng)或協(xié)議的兼容性:

? ? 可以通過 http,ftp 或 Git 協(xié)議通過普通套接字或 ssh 發(fā)布存儲(chǔ)庫。Git 還具有并發(fā)版本系統(tǒng)(CVS)服務(wù)器仿真,它可以使用現(xiàn)有的 CVS 客戶端和IDE 插件來訪問 Git 存儲(chǔ)庫。Apache SubVersion(SVN)和 SVK 存儲(chǔ)庫可以直接與 Git-SVN 一起使用。

Git 在 DevOps 中的作用?

? ??既然您知道什么是 Git,那么您應(yīng)該知道 Git 是 DevOps 不可或缺的一部分。

? ? DevOps 是將敏捷性引入開發(fā)和運(yùn)營過程的實(shí)踐。這是一種全新的意識(shí)形態(tài),席卷了全世界的It組織,促進(jìn)了項(xiàng)目生命周期,進(jìn)而增加了利潤。DevOps 促進(jìn)開發(fā)工程師和運(yùn)營人員之間的溝通,共同參與整個(gè)服務(wù)生命周期,從設(shè)計(jì)到開發(fā)過程,再到生產(chǎn)支持。

? ??下圖描述了 DevOps 的生命周期,并顯示了 Git 如何適合 DevOps。

? ??上圖顯示了 DevOps 的整個(gè)生命周期,從計(jì)劃項(xiàng)目到部署和監(jiān)視。當(dāng)管理協(xié)作者為共享存儲(chǔ)庫貢獻(xiàn)的代碼時(shí),Git 扮演著至關(guān)重要的角色。然后提取該代碼以執(zhí)行連續(xù)集成,以創(chuàng)建內(nèi)部版本并在測(cè)試服務(wù)器上對(duì)其進(jìn)行測(cè)試,最后將其部署在生產(chǎn)環(huán)境中。

? ??諸如Git之類的工具使開發(fā)人員與運(yùn)營團(tuán)隊(duì)之間能夠進(jìn)行溝通。當(dāng)您開發(fā)一個(gè)擁有大量協(xié)作者的大型項(xiàng)目時(shí),在項(xiàng)目中進(jìn)行更改時(shí),在協(xié)作者之間進(jìn)行溝通非常重要。在Git 中提交消息在團(tuán)隊(duì)之間的溝通中起著非常重要的作用。我們所有人部署的零碎內(nèi)容都位于版本控制系統(tǒng)(如 Git )中。要在 DevOps 中取得成功,您需要在版本控制中進(jìn)行所有通信。因此,Git 在 DevOps 的成功中起著至關(guān)重要的作用。

使用 Git 的熱門公司

? ??與市場(chǎng)上其他可用的版本控制工具(例如Apache Subversion(SVN),并發(fā)版本系統(tǒng)(CVS),Mercurial等)相比,Git 更受歡迎。您可以通過下面的?Google? 趨勢(shì)圖來比較 Git 和其他版本控制工具的興趣:

? ??在大型公司中,產(chǎn)品通常是由遍布世界各地的開發(fā)人員開發(fā)的。為了實(shí)現(xiàn)它們之間的通信,Git 是解決方案。

? ??一些使用 Git 進(jìn)行版本控制的公司包括:Facebook、Yahoo、Zynga、Quora、Twitter、eBay、Salesforce、Microsoft等。

? ??最近,Microsoft 的所有新開發(fā)工作都已包含在 Git 特性中。微軟正在遷移 .NET 和它的許多開源項(xiàng)目遷移到 GitHub 上,這些項(xiàng)目都是由 Git 管理的。

? ??其中一個(gè)項(xiàng)目是 LightGBM。 它是一種快速、分布式、高性能的基于決策樹算法的梯度增強(qiáng)框架,用于排序、分類等許多機(jī)器學(xué)習(xí)任務(wù)。

? ??在這里,通過提供速度和準(zhǔn)確性,Git 在管理 LightGBM 的分布式版本中扮演著重要角色。


什么是 Git? - 探索分布式版本控制工具的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
德钦县| 汝南县| 明光市| 淳化县| 伊宁市| 丽江市| 休宁县| 绍兴市| 涪陵区| 盐源县| 洛浦县| 南木林县| 定州市| 安顺市| 比如县| 雅江县| 乐山市| 嘉祥县| 资溪县| 福州市| 东兰县| 从化市| 金门县| 凤阳县| 花莲市| 临夏县| 昌平区| 玉山县| 凉城县| 夏河县| 正定县| 日喀则市| 溧阳市| 大冶市| 黎平县| 扶绥县| 东平县| 柳州市| 聂拉木县| 沐川县| 贵溪市|