Git與Svn的主要不同點(diǎn)
1. Git是分布式的,SVN是集中式的梆暖,好處是跟其他同事不會(huì)有太多的沖突颈畸,自己寫的代碼放在自己電腦上乌奇,一段時(shí)間后再提交没讲、合并,也可以不用聯(lián)網(wǎng)在本地提交礁苗;
2. Git下載下來(lái)后爬凑,在本地不必聯(lián)網(wǎng)就可以看到所有的log,很方便學(xué)習(xí)寂屏,SVN卻需要聯(lián)網(wǎng)贰谣;
3. Git鼓勵(lì)分支,在Git實(shí)際開(kāi)發(fā)中分支的分離和merge是屬于日常操作迁霎,開(kāi)啟和合并分支成本相比SVN要小得多:SVN是復(fù)制一份代碼到分支目錄吱抚,Git則是在分支點(diǎn)做一下標(biāo)記,隨便一次沖突就會(huì)自動(dòng)產(chǎn)生分支
而SVN考廉,SVN通過(guò)自帶的Branch merge秘豹,有merge時(shí)用的是Beyond Compare工具合并后再Commit的
4.Git支持本地回滾,可以減少中央庫(kù)上的冗余版本昌粤。而svn是不支持回滾的
5. SVN在Commit前既绕,我們都建議是先Update一下,跟本地的代碼編譯沒(méi)問(wèn)題涮坐,并確保開(kāi)發(fā)的功能正常后再提交凄贩,這樣會(huì)挺麻煩的,如果有時(shí)沒(méi)有先Updata袱讹,就
Commit疲扎,會(huì)發(fā)生了一些錯(cuò)誤,耽誤時(shí)間捷雕,Git可能這種情況會(huì)少些椒丧。
Git的劣勢(shì)
版本號(hào)不好看。比起SVN那樣簡(jiǎn)短的整數(shù)救巷,長(zhǎng)長(zhǎng)的SHA1比較難記憶和對(duì)比壶熏,不過(guò)分布式也沒(méi)有辦法統(tǒng)一成整數(shù)的形式;
操作比較繁瑣浦译,加進(jìn)cache要add棒假,提交本地庫(kù)要commit,提交遠(yuǎn)程庫(kù)還要再push精盅,相關(guān)概念也比較多帽哑;
沒(méi)有比較完善的訪問(wèn)權(quán)限控制,這個(gè)大概是最嚴(yán)重的問(wèn)題了渤弛,不能為每一個(gè)人單獨(dú)配置相關(guān)的訪問(wèn)權(quán)限。也許開(kāi)源社區(qū)里面不需要甚带,但是不是所有的開(kāi)發(fā)都是像開(kāi)源社區(qū)那樣大公無(wú)私的她肯;
每個(gè)版本之間變化都非常大時(shí)不適用git佳头。比如說(shuō)可以用svn去管理binary release的各個(gè)版本,客戶端可以選擇checkout哪個(gè)branch或者tag晴氨;但如果用git康嘉,就得先全clone到本地
很難直接跟蹤git倉(cāng)庫(kù)的某個(gè)子目錄:必須clone整個(gè)倉(cāng)庫(kù)然后做subtree merge。而SVN則可以直接checkout/update某個(gè)子目錄籽前。
可能是跟Torvalds Linus本人親自設(shè)計(jì)有關(guān)亭珍,和bash結(jié)合得比較密切,一些操作直接就是bash腳本枝哄,以至于至今在Windows下沒(méi)有一個(gè)比較像樣的客戶端肄梨,居然還是需要用cygwin模擬一個(gè)linux環(huán)境;
兩者模式不同:
svn 的模式是:
1挠锥、寫代碼众羡。
3、從服務(wù)器拉回服務(wù)器的當(dāng)前版本庫(kù)蓖租,并解決服務(wù)器版本庫(kù)與本地代碼的沖突粱侣。
5、將本地代碼提交到服務(wù)器蓖宦。
分布式版本管理的模式是:
1齐婴、寫代碼。
2稠茂、提交到本地版本庫(kù)柠偶。
3、從服務(wù)器拉回服務(wù)器的當(dāng)前版本庫(kù)主慰,并解決服務(wù)器版本庫(kù)與本地代碼的沖突嚣州。
4、將遠(yuǎn)程庫(kù)與本地代碼合并結(jié)果提交到本地版本庫(kù)共螺。
5该肴、將本地版本庫(kù)推到服務(wù)器。