在講區(qū)別以及聯(lián)系之前先簡(jiǎn)要的介紹一下,,這三者都是什么(本篇文章適合剛?cè)腴T的新手,,大佬請(qǐng)出門左轉(zhuǎn)) 1.什么是 Git? Git 是一個(gè)版本控制系統(tǒng)。 版本控制是一種用于記錄一個(gè)或多個(gè)文件內(nèi)容變化,,方便我們查閱特定版本修訂情況的系統(tǒng),。 以前在沒有使用版本控制的時(shí)候,我們通常在我們的項(xiàng)目根目錄下這樣命名項(xiàng)目: project_v1,、project_v1.1,、project_v2等等,通過這種方式記錄我們項(xiàng)目的不同版本的修改,, 有的時(shí)候我們還會(huì)在不同版本的文件中寫一個(gè)說明,,記錄此版本項(xiàng)目新增、修改,,刪除等操作,。 這樣的操作是很繁雜的,有的時(shí)候還可能因?yàn)橐恍┓侨藶橐蛩貙?dǎo)致文件丟失這樣的事故,。 有了版本控制系統(tǒng),,我們就不用再手動(dòng)進(jìn)行一些繁雜的操作,并且對(duì)于文件丟失這種事故我們也不 用再擔(dān)心,,你可以隨便回到歷史記錄的某個(gè)時(shí)刻。 早期出現(xiàn)的版本控制系統(tǒng)有:SVN,、CVS等,,它們是集中式版本控制系統(tǒng),,都有一個(gè)單一的集中管理 的服務(wù)器,保存所有文件的修訂版本,,而協(xié)同合作的開發(fā)人員都通過客戶端連接到這臺(tái)服務(wù)器,,取出 最新的文件或者提交更新。 從網(wǎng)上找了一張圖,,展示一下它們的原理: 而我們的主角 Git 是分布式版本控制系統(tǒng),。Git 已經(jīng)成為越來越多開發(fā)者的青睞,因?yàn)榉植际降膬?yōu)勢(shì)是很顯著的,。 2.說一下集中式和分布式版本控制系統(tǒng)的區(qū)別: 集中式版本控制系統(tǒng),,版本庫是集中存放在中央服務(wù)器的,工作的時(shí)候,,用的是自己的電腦,,所以,我們首先需要 從中央服務(wù)器上拉取最新的版本,,然后開始工作,,等工作完了,再把自己的工作提交到中央服務(wù)器,。在這里借用廖 雪峰老師的一個(gè)比喻,,中央服務(wù)器好比是一個(gè)圖書館,你要改其中的一本書,,必須先要從圖書館里把書借出來,,然 后更改,改完之后,,再放回圖書館,。 集中式版本控制系統(tǒng)的一個(gè)最大毛病就是必須聯(lián)網(wǎng)才能工作,所以對(duì)于網(wǎng)絡(luò)環(huán)境比較差的情況使用集中式版本控制 系統(tǒng)是一件比較讓人頭疼的事情,。 分布式版本控制系統(tǒng)沒有中央服務(wù)器的概念,,我們使用相關(guān)的客戶端提取的不只是最新的文件,而是把代碼倉庫完整 地鏡像下來,,相當(dāng)于每個(gè)人的電腦都是一個(gè)完整的版本庫,,這樣的話,任何一處協(xié)同工作的服務(wù)器出現(xiàn)故障,,都可以 用任何一個(gè)鏡像出來的本地倉庫恢復(fù),。并且,即便在網(wǎng)絡(luò)環(huán)境比較差的情況下也不用擔(dān)心,,因?yàn)榘姹編炀驮诒镜仉娔X 上,。 個(gè)人總結(jié): (1).分布式版本控制系統(tǒng)下的本地倉庫包含代碼庫還有歷史庫,在本地就可以查看版本歷史 (2).而集中式版本控制系統(tǒng)下的歷史倉庫是存在于中央倉庫,,每次對(duì)比與提交代碼都必須連接到中央倉庫 (3).多人開發(fā)時(shí),,如果充當(dāng)中央倉庫的Git倉庫掛掉了,,任何一個(gè)開發(fā)者都可以隨時(shí)創(chuàng)建一個(gè)新的中央倉庫然后同步就可 以恢復(fù)中央倉庫 從網(wǎng)上找了一張圖,展示一下它們的原理: 3.GitHub 和 GitLab 都是基于 web 的 Git 倉庫,,使用起來二者差不多,,它們都提供了分享開源項(xiàng)目的平臺(tái), 為開發(fā)團(tuán)隊(duì)提供了存儲(chǔ),、分享,、發(fā)布和合作開發(fā)項(xiàng)目的中心化云存儲(chǔ)的場(chǎng)所。 GitHub 作為開源代碼庫,,擁有超過 900 萬的開發(fā)者用戶,,目前仍然是最火的開源項(xiàng)目托管平臺(tái),GitHub 同時(shí) 提供公共倉庫和私有倉庫,,但如果使用私有倉庫,,是需要付費(fèi)的。 GitLab 解決了這個(gè)問題,,你可以在上面創(chuàng)建私人的免費(fèi)倉庫。 GitLab 讓開發(fā)團(tuán)隊(duì)對(duì)他們的代碼倉庫擁有更多的控制,,相比較 GitHub , 它有不少特色: (1) 允許免費(fèi)設(shè)置倉庫權(quán)限; (2) 允許用戶選擇分享一個(gè) project 的部分代碼,; (3) 允許用戶設(shè)置 project 的獲取權(quán)限,,進(jìn)一步提升安全性,; (4) 可以設(shè)置獲取到團(tuán)隊(duì)整體的改進(jìn)進(jìn)度; (5) 通過 innersourcing 讓不在權(quán)限范圍內(nèi)的人訪問不到該資源,; 所以,,從代碼的私有性上來看,GitLab 是一個(gè)更好的選擇,。但是對(duì)于開源項(xiàng)目而言,,GitHub 依然是代碼托管的首選。 |
|