Git到底是什麼?

特姆鲁普 2024-09-01 10:44 12次浏览 0 条评论 taohigo.com

一、什麼是Git?

【一心同學】用一句話概括:

Git是目前世界上最先進的分佈式版本控制系統,沒有之一!

二、什麼是版本控制系統?

問題引入

我們來講一個例子,在公司裡,上司要讓小明去寫一份報告,小明是一個非常認真工作的員工,於是小明回到傢後就開始寫報告,寫好瞭一份報告,卻發現好像有些地方不太好,但對於原報告又不想刪掉,說不定哪一天可以用得著呢,於是,小明就在第一份報告的基礎上繼續更改,第二個版本的報告完成瞭,但細心的小明發現不行,還得改,於是,就又寫瞭版本3,版本4…..

於是就造成瞭以下這個局面:

【痛苦面具1】:當小明想要找回之前修改的某個報告時,卻【找不到瞭】,是不是及其【痛苦】。

【痛苦面具2】:更要命的是,有些部分需要小明的同事幫助填寫,於是小明把文件通過【微信】發送給他,然後,小明繼續修改Word文件。一天後,同事再把Word文件傳給小明,此時,小明需再想想,發給同事之後到收到他的文件期間,小明作瞭【哪些改動】,得把小明的改動和同事的部分【合並】,真困難。

救星登場

如果有一個軟件,不但能自動幫我記錄每次文件的改動,還可以讓同事協作編輯,這樣就不用自己管理一堆類似的文件瞭,也不需要把文件傳來傳去。如果想查看某次改動,隻需要在軟件裡瞄一眼就可以,豈不是很方便?

這個軟件用起來就應該像這個樣子,能記錄每次文件的改動:

而這個就是我們的版本控制系統!

二、集中式與分佈式版本控制區別

集中式版本控制(CVCS)

特點:

版本庫是集中存放在中央服務器的,而幹活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然後開始幹活,幹完活瞭,再把自己的活推送給中央服務器。中央服務器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然後回到傢自己改,改完瞭,再放回圖書館。

優點:

1、每個人都可以在一定程度上看到項目中的其他人正在做些什麼。

2、管理員可以輕松掌控每個開發者的權限,並且管理一個 CVCS 要遠比在各個客戶端上維護本地數據庫來得輕松容易。

缺點:

1、必須聯網才能工作,這也是其最大的毛病。

2、中央服務器的單點故障,如果宕機一小時,那麼在這一小時內,誰都無法提交更新,也就無法協同工作。

3、安全問題欠佳,如果中心數據庫所在的磁盤發生損壞,又沒有做恰當備份,那麼我們將丟失所有數據。

分佈式版本控制系統(DVCS)

特點:

與集中式版本控制系統相比,分佈式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣,在工作的時候,就不需要聯網瞭,因為版本庫就在你自己的電腦上。

那麼我們如何多人協作呢?

當你在自己電腦上改瞭文件A,你的同事也在他的電腦上改瞭文件A,這時,你們倆之間隻需把各自的修改推送給對方,就可以互相看到對方的修改瞭。

實際開發中的使用

在實際使用分佈式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個局域網內,兩臺電腦互相訪問不瞭,也可能今天你的同事病瞭,他的電腦壓根沒有開機。

因此,分佈式版本控制系統通常也有一臺充當“中央服務器”的電腦,但這個服務器的作用僅僅是用來方便“交換”大傢的修改,沒有它大傢也一樣幹活,隻是交換修改不方便而已。

集中式與分佈式對比

1、集中式版本管理系統需要中央服務器,分佈式管理系統不需要中央服務器。

2、集中式版本管理需要聯網,分佈式管理不需要聯網。

3、分佈式版本控制系統的安全性要比集中式版本管理高很多。

因為每個人電腦裡都有完整的版本庫,某一個人的電腦壞掉瞭不要緊,隨便從其他人那裡復制一個就可以瞭。而集中式版本控制系統的中央服務器要是出瞭問題,所有人都沒法幹活瞭。

三、Git工作流程

工作流程

Workspace:工作區,平時存放項目代碼的地方。

Index / Stage:暫存區,用於臨時存放你的改動,事實上它隻是一個文件,保存即將提交到文件列表信息。

Repository:倉庫區(或本地倉庫),就是安全存放數據的位置,這裡面有你提交到所有版本的數據。其中HEAD指向最新放入倉庫的版本。

Remote:遠程倉庫 ,托管代碼的服務器,可以簡單的認為是你項目組中的一臺電腦用於遠程數據交換。

Git的工作流程:

1、在工作目錄(Workspace)中添加、修改文件;

2、將需要進行版本管理的文件放入暫存區域(Index / Stage);

3、將暫存區域的文件提交到Git倉庫。

目錄結構

Directory:使用Git管理的一個目錄,也就是一個倉庫,包含我們的工作空間和Git的管理空間。

WorkSpace:需要通過Git進行版本控制的目錄和文件,這些目錄和文件組成瞭工作空間。

.git:存放Git管理信息的目錄,初始化倉庫的時候自動創建。

Index/Stage:暫存區,或者叫待提交更新區,在提交進入repo之前,我們可以把所有的更新放在暫存區。

Local Repo:本地倉庫,一個存放在本地的版本庫;HEAD會隻是當前的開發分支(branch)。

Stash:隱藏,是一個工作狀態保存棧,用於保存/恢復WorkSpace中的臨時狀態。

下面分享一下B站大佬Git入門到精通的視頻合集,一共36集,全面介紹Git的詳細內容

小結

以上就是【一心同學】對【Git的介紹】,現在對Git的理解是不是就突然【熟悉】起來瞭,而【Git】的強大之處還不僅僅文章指出來的這些,在接下來的博客裡,請跟著【一心同學】的步伐去領略【Git】的強大之處!

如果這篇【文章】有幫助到你,希望可以給小編點個贊 ,創作不易,相比官方的陳述,我更喜歡用【通俗易懂】的文筆去講解每一個知識點,如果有對【後端技術】感興趣的小可愛,也歡迎關註❤️❤️❤️ 【一心同學】❤️❤️❤️,我將會給你帶來巨大的【收獲與驚喜】 !

————————————————