在蟲蟲管理的一個2000人QQ群中很多人也時常問這個問題,總之Git和SVN是兩個完全不同思維方式的版本管理,理解Git要完全拋棄SVN的思維和操作,如果還想以老的方式思維來用Git話,蟲蟲不建議他來用Git。 Git相比叫傳統(tǒng)的基于文件SVN優(yōu)勢明顯,主要體現(xiàn)在天然分布式不怕丟失;不以文件為為基礎,基于Git的數(shù)據(jù)庫(commit哈希健值文件)的版本管理,分支、標簽等操作飛速,而不是緩慢地文件和目錄操作;Git下每個人都有一個獨特的工作區(qū)和分支,不必實時和中心服務器同步就可以;帶有社交性質的基于Fork——PR(MR)流程的,協(xié)作版本管理;最后就是基于gitlab running/github webhook的CI/CD開發(fā)一棧自動化流水線或者DevOPS。以上各個點都是Git的巨大獨特的優(yōu)勢,下面蟲蟲給大家一一論述下。 天然分布式版本庫存儲和SVN中心集中式文件管理的倉儲管理不同,Git從設計到誕生就以融入了分布式基因。雖然Git也有服務器端的Github、Gitlab、Gogs等多種服務器端,但是Git所有操作都可以無服務器存在,你可以只在本地都能完成所有git操作,可以在目錄之間實現(xiàn)clone、push和pull等需要服務器端的操作。設置權限和通訊方法后,Git客戶端直接也完全可以實現(xiàn)這些操作。所以我們說Git是天然分布式,無需中心服務器 介入。Git服務器的引入一個好處就是把一些操作(比如添加證書,建立賬號、倉庫元信息)和通訊傳輸方法(http、ssh),及大量更多擴展功能在服務器端Web界面實現(xiàn)了,方便了用戶的使用。 分布式的一個好處是代碼變化push好的倉庫數(shù)據(jù),最少保留兩份:本地一份和服務器一份,不怕丟。 Git是數(shù)據(jù)庫,不是目錄文件Git中倉庫信息都是以hash健值方式保存文件相當于一個數(shù)據(jù)庫,當用戶子工作區(qū)做了add操作后,此后變化信息就成了Git對象數(shù)據(jù)庫了(blob、commit、three對象)。通過git命令(git clone checkout rest)可以實現(xiàn)把git數(shù)據(jù)庫(commit歷史庫和暫存區(qū)),變化成用戶實際接觸到文件和目錄的工作區(qū)。 這是Git,獨特之處和優(yōu)勢之處,也是很多初學者迷惑指出,尤其拿之前使用SVN的人無法理解的。Git的四個區(qū)(工作區(qū)、暫存區(qū)、本地倉庫區(qū)和遠程倉庫區(qū)),五個狀態(tài)轉化流程如下: 知道了這些Git就很多問題就都很好理解了。比如分支,比如標簽tag,比如Head這些都是對特定commit的指針,所以對拉分支,分支間轉化都很容易,不過把指針(分支,Head)指向某個commit,然后利用該commit ID再生成工作區(qū)而已,看上去就和在不同分支的文件目錄下切換,而且非常迅速,因為Git的是按照差異對比來生成差異的目錄和文件的。 Git的社交性和協(xié)作(Fork——PR/MR)Git能夠有現(xiàn)在這么流行,當然還是歸根于其社交協(xié)作性質。基于Fork和PR/MR的協(xié)作流程鼓勵了任何人都可以參與到項目中來而無需做其他特殊操作,無需特殊權限設置和申請。通過Fork操作把任何倉庫都變成自己Owner的倉庫,然后想怎么改就怎么改,想怎么操作就怎么操作,完全有自己做主。改完了可以通過PR(github:Pull Request)MR(Gitlab Merge Request)在提交給遠倉庫,該過程可以自動做對比,原項目管理者可以review變化,如果沒問題就可以Merge 合并到倉庫,完成一個完美的協(xié)作閉環(huán)操作。 由于這種社交性質的協(xié)作流,使得git廣泛地流行起來,也帶動了相關網(wǎng)站Github和Gitlab也流行起來。Githhub號稱”全球最大的同性別交友平臺“(碼農大多數(shù)是單身男)就是這么來的。 基于Git的CI/CD和DevOps這是也git才特有的功能,借助于Gitlab runner和webhook實現(xiàn)代碼發(fā)布后,自動編譯、自動測試、自動安掃、自動發(fā)布的一棧式自動化流程,大大釋放開發(fā)過程繁雜的人力投入和流程,實現(xiàn)敏捷開發(fā),快速迭代。這是目前的軟件開發(fā)的大勢和未來發(fā)展的方向。特別是云和容器的技術的發(fā)展和不對實踐完善,這種一棧式解決方案越來越成熟,實現(xiàn)的功能越來越多,也被越來越多的企業(yè)開發(fā)團隊所采納。 而且這一切實現(xiàn)在git來說就是一個yml配置而已,push后,后面一切都自動化完成,并反饋信息。很神奇很憧憬把。那就關注蟲蟲,來跟蟲蟲來學git和 DevOps。 |
|
來自: 天下小糧倉 > 《大數(shù)據(jù)》