硬件型號:戴爾Latitude5320
系統(tǒng)版本:Windows10
1)GIT是分布式的,SVN不是:
這是GIT和其它非分布式的版本控制系統(tǒng),例如SVN,CVS等,最核心的區(qū)別。好處是跟其他同事不會有太多的沖突,自己寫的代碼放在自己電腦上,一段時間后再提交、合并,也可以不用聯(lián)網(wǎng)在本地提交;如果你能理解這個概念,那么你就已經(jīng)上手一半了。需要做一點(diǎn)聲明,GIT并 不是目前第一個或唯一的分布式版本控制系統(tǒng)。還有一些系統(tǒng),例如Bitkeeper, Mercurial等,也是運(yùn)行在分布式模式上的。但GIT在這方面做的更好,而且有更多強(qiáng)大的功能特征。
GIT跟SVN一樣有自己的 集中式版本庫或服務(wù)器。但,GIT更傾向于被使用于分布式模式,也就是每個開發(fā)人員從中心版本庫/服務(wù)器上chect out代碼后會在自己的機(jī)器上克隆一個自己的版本庫??梢赃@樣說,如果你被困在一個不能連接網(wǎng)絡(luò)的地方時,你仍然能夠提交文件,查看歷史版本記錄,創(chuàng)建項(xiàng) 目分支等。
2)GIT把內(nèi)容按元數(shù)據(jù)方式存儲,而SVN是按文件:
所有的資源控 制系統(tǒng)都是把文件的元信息隱藏在一個類似.svn,.cvs等的文件夾里。如果你把.git目錄的體積大小跟.svn比較,你會發(fā)現(xiàn)它們差距很大。因 為,.git目錄是處于你的機(jī)器上的一個克隆版的版本庫,它擁有中心版本庫上所有的東西,例如標(biāo)簽,分支,版本記錄等。
3)GIT分支和SVN的分支不同:
分支在SVN中一點(diǎn)不特別,就是版本庫中的另外的一個目錄。如果你想知道是否合并了一個分支,你需要手工運(yùn)行像這樣的命令svn propget svn:mergeinfo,來確認(rèn)代碼是否被合并。
然而,處理GIT的分支卻是相當(dāng)?shù)暮唵魏陀腥?。你可以從同一個工作目錄下快速的在幾個分支間切換。你很容易發(fā)現(xiàn)未被合并的分支,你能簡單而快捷的合并這些文件。
Git鼓勵分Branch,而SVN,說實(shí)話,我用Branch的次數(shù)還挺少的,SVN自帶的Branch merge我還真沒用過,有merge時用的是Beyond Compare工具合并后再Commit的;
4)GIT沒有一個全局的版本號,而SVN有:
目前為止這是跟SVN相比GIT缺少的最大的一個特征。
5)GIT的內(nèi)容完整性要優(yōu)于SVN:
GIT的內(nèi)容存儲使用的是SHA-1哈希算法。這能確保代碼內(nèi)容的完整性,確保在遇到磁盤故障和網(wǎng)絡(luò)問題時降低對版本庫的破壞。
6)Git下載下來后,在本地不必聯(lián)網(wǎng)就可以看到所有的log,很方便學(xué)習(xí),SVN卻需要聯(lián)網(wǎng);
(圖片來源于互聯(lián)網(wǎng))