許多小伙伴們或許聽(tīng)過(guò) Git 的大名,但卻對(duì) Git 是做什么的不甚了解。今天小編就來(lái)給大家介紹一下 Git 是什么,讓小伙伴們明白為什么要使用 Git 進(jìn)行版本控制。
首先介紹一下,什么是版本控制。版本控制指的是程序員對(duì)于其產(chǎn)出的代碼按時(shí)間先后分成一個(gè)一個(gè)的版本,每個(gè)版本之間可能有代碼的變動(dòng)。通過(guò)對(duì)版本的控制,來(lái)實(shí)現(xiàn)項(xiàng)目的管理和迭代。
在最開始的時(shí)候,代碼可以不需要版本控制。但隨著代碼規(guī)模的增加,每一次對(duì)源代碼的修改都可能導(dǎo)致整體代碼的出錯(cuò),這時(shí)候?qū)Υa的修改記錄就顯得很重要。但是代碼修改多了修改記錄也會(huì)因此變得不好管理,這時(shí)候,版本控制工具出現(xiàn)了。
在這個(gè)時(shí)候版本控制工具一般采用的是中心式的架構(gòu)。以 SVN(一款著名的版本管理工具)為例,它需要一個(gè)中心服務(wù)器來(lái)進(jìn)行代碼的保存。如果服務(wù)器出現(xiàn)了什么異常(比如斷線,崩潰,請(qǐng)求沖突),就會(huì)影響到版本控制工具的正常使用。
在對(duì) Linux 的維護(hù)過(guò)程中,Linus 深感吃力(需要手動(dòng)合并來(lái)自 Linux 社區(qū)提交的代碼)。因?yàn)樯鲜鲈蛩麍?jiān)定地反對(duì) CVS 和 SVN。本來(lái) Linus 選擇了一個(gè)商業(yè)的版本控制系統(tǒng)來(lái)對(duì) Linux 進(jìn)行版本控制,然而因?yàn)槟承┰颍ㄩ_源社區(qū)與提供系統(tǒng)的公司鬧掰了),這個(gè)版本控制系統(tǒng)的公司收回了 Linux 社區(qū)的免費(fèi)使用權(quán)。于是 Linus 花了兩周時(shí)間實(shí)現(xiàn)了一個(gè)分布式版本控制系統(tǒng),這就是后面的 Git。
Git 與 SVN 不同,它使用的是分布式管理,也就是沒(méi)有中心服務(wù)器的版本控制。要讓別人看到自己的修改,只需要將自己的修改推送給別人就行了。同時(shí),雖然它沒(méi)有中心服務(wù)器,但它可以有一個(gè)備份服務(wù)器,它的功能有點(diǎn)類似于 SVN 的中央服務(wù)器,但它的作用僅是方便交換修改,而不像 SVN 那樣還要負(fù)責(zé)源代碼的管理。
此外,Git 還有極其強(qiáng)大的分支管理功能。多人協(xié)作的時(shí)候,分支的合并管理和切換功能,直接將 SVN 等版本控制工具遠(yuǎn)遠(yuǎn)甩開。
值得一提的是,Git 的版本管理也是相當(dāng)出色,版本的切換速度也是相當(dāng)迅速。因?yàn)榕c其他版本控制系統(tǒng)不同,其他版本控制系統(tǒng)管理的是文件,而 Git 管理的是修改。管理修改的方式讓版本回退和分支管理等功能的效率得到了極大的提升。
最后,Git 還有一項(xiàng)殺手锏級(jí)別的功能——遠(yuǎn)程倉(cāng)庫(kù)。通過(guò)將 Git 代碼托管到 Git 公共服務(wù)器(比如國(guó)外的 GitHub,國(guó)內(nèi)的 Gitee),只要你有遠(yuǎn)程倉(cāng)庫(kù)的 SSHkey,你就能獲取別人的代碼。
小結(jié)
現(xiàn)在的互聯(lián)網(wǎng)公司,對(duì)開發(fā)的要求一般都會(huì)有要求會(huì)使用版本控制工具(以 SVN 和 Git 居多,尤其是 Git),而 Git 開源免費(fèi)且無(wú)需部署專門的服務(wù)器的特點(diǎn)讓互聯(lián)網(wǎng)公司們對(duì)它青睞有加,所以學(xué)習(xí) Git 勢(shì)在必行。好在 Git 的入門并不困難,在 git新手入門微課中,只需要一個(gè)半小時(shí)左右就能基本掌握 Git 的使用,小伙伴們快來(lái)學(xué)習(xí)吧!