版本控制系統(tǒng)(Version Control System - VCS)
版本控制系統(tǒng)(VCS)最基本的功能是版本管理痰哨。所謂版本控制行剂,意思就是在文件的修改歷程中保留修改歷史航徙,讓你可以方便地撤銷之前對文件的修改操作。
①:基本功能(版本管理)
當我們在編輯文件的時候誤改或者誤刪的時候厂置,我們會通過ctrl+z來撤銷自己的操作菩掏,回到前一步甚至前幾十步的操作,版本控制也有這樣一個功能昵济,它可以使你的文件患蹂,目錄,項目很容易回到前幾個版本砸紊,但是這里說的git不會自動幫你記錄你的每一次修改操作,它只會記錄你主動提交
到版本倉庫的文件或者項目囱挑。
②:中央倉庫(多人合作開發(fā))
版本控制系統(tǒng)可以幫你記錄任何一個項目的版本醉顽,但是在實際開發(fā)中,一個項目往往由許多人一起共同開發(fā)平挑,所以版本控制系統(tǒng)就提供了一個中心倉庫來存儲所有人共同開發(fā)的代碼游添,所有人改動后上傳的代碼都會被中心倉庫記錄系草,我們可以很方便的查看每個人的更改記錄,也可以很方便的回退到以前的任何一個版本唆涝。
所以根據(jù)上面所說的
版本控制
找都、主動提交
、中央倉庫
這三個要素廊酣,共同構(gòu)成了版本控制系統(tǒng)(VCS)的核心:開發(fā)團隊中的每個人向中央倉庫主動提交自己的改動和同步別人的改動能耻,并在需要的時候查看和操作歷史版本,這就是版本控制系統(tǒng)亡驰。
集中式版本控制(CVCS)和分布式版本控制(DVCS)
集中化的版本控制系統(tǒng)(Centralized Version Control Systems晓猛,簡稱 CVCS)。 這類系統(tǒng)凡辱,諸如 CVS戒职、Subversion 以及 Perforce 等,都有一個單一的集中管理的服務(wù)器透乾,保存所有文件的修訂版本洪燥,而協(xié)同工作的人們都通過客戶端連到這臺服務(wù)器,取出最新的文件或者提交更新乳乌。
集中式版本控制雖然簡單捧韵,但是也存在很大的風險,當所有人都依賴這臺中央電腦的時候钦扭,這臺電腦崩了纫版,所有人都會在這臺電腦恢復(fù)之前不能開發(fā),如果這臺電腦只是單純的崩了客情,好了之后大家又都可以使用其弊,當這臺電腦磁盤壞了,所有數(shù)據(jù)都沒了膀斋,那就損失大了梭伐,沒有一個人有完整的代碼,所以這樣存在很大的風險仰担。
分布式版本控制系統(tǒng)(Distributed Version Control System糊识,簡稱 DVCS)。 在這類系統(tǒng)中摔蓝,像 Git赂苗、Mercurial、Bazaar 以及 Darcs 等贮尉,客戶端并不只提取最新版本的文件快照拌滋,而是把代碼倉庫完整地鏡像下來。 這么一來猜谚,任何一處協(xié)同工作用的服務(wù)器發(fā)生故障败砂,事后都可以用任何一個鏡像出來的本地倉庫恢復(fù)赌渣。 因為每一次的克隆操作,實際上都是一次對代碼倉庫的完整備份昌犹。
所以在分布式版本控制系統(tǒng)中坚芜,即使中央倉庫沒了 ,每個人本地倉庫中都會有一份完整的代碼斜姥,
但是分布式也有缺點:
- 由于每一個機器都有完整的本地倉庫鸿竖,所以初次獲取項目(Git clone)的時候會比較耗時;
- 由于每個機器都有完整的本地倉庫疾渴,所以本地占用的存儲比中央式 (CVCS) 要高千贯。
Git,Github搞坝,以及Gitlab
才接觸這些東西的時候是相當懵的搔谴,根本不知道這些都是干嘛的 ,現(xiàn)在想想也把它們都記錄下來吧桩撮。
Git:
分布式版本控制系統(tǒng)敦第,記錄文件或者項目的每一次修改。
GitHub:
是2008年由Ruby on Rails編寫而成店量。GitHub同時提供付費賬戶和免費賬戶芜果。這兩種賬戶都可以創(chuàng)建公開的代碼倉庫,但是付費賬戶也可以創(chuàng)建私有的代碼倉庫融师。我們可以通過Git命令代碼存放在github倉庫中右钾。
Gitlab:
GitLab擁有GitHub擁有的一切,但他擁有更多——讓團隊對它們的repositories擁有更多的控制旱爆,它的特色:
- 非常便捷的用戶界面舀射,在同一界面上獲取到:projects,最近的projects怀伦,用戶脆烟,最近的用戶,群組和狀態(tài)房待;
- 允許設(shè)置倉庫權(quán)限是公用的還是私有的邢羔;
- “Snippet support”讓用戶分享一個project的部分代碼,而不是整個project桑孩。
- 受保護的分支是一種提升代碼安全性的新方法拜鹤,它們允許用戶設(shè)置project的獲取權(quán)限,所以一個團隊中只有特定的人可以push流椒,force push或者刪除一個分支的代碼署惯。
- Authentication levels更進一步的提升安全性,允許用戶給人讀寫以外的權(quán)限。舉例來說呵晨,你可以給一個組員跟蹤變動的權(quán)限卻不給他獲取代碼的權(quán)限锌蓄。
- 你可以設(shè)置獲取到團隊的整體的改進進度,而不是你個人的進度轻猖。
- 開發(fā)者通過打上“仍在進行中”狀態(tài)標簽讓其他成員知道代碼沒有完成,從而阻止未完成的代碼合并到其他的代碼中域那。
- “innersourcing”公司的資源如果員工不再權(quán)限范圍內(nèi)咙边,將不知道這個資源的存在。