因?yàn)樽罱驹诟鼡Q源代碼管理工具,所以在此對(duì)git和svn進(jìn)行了對(duì)比
1.Git和SVN一樣都有自己的集中式版本庫或者服務(wù)器。每個(gè)開發(fā)者會(huì)從版本庫或者服務(wù)器check out代碼到本地,會(huì)在本地克隆一個(gè)和中心版本庫一模一樣的本地版本庫,所以再也不用擔(dān)心斷網(wǎng)了沒辦法提交代碼了。
2.克隆代碼:git會(huì)比svn快很多(在svn上克隆UI的文件,花了10分鐘,不知道是網(wǎng)絡(luò)的導(dǎo)致還是怎么了)
3.對(duì)比歷史版本:svn需要聯(lián)網(wǎng)才能看到歷史版本對(duì)比,git不需要,因?yàn)間it在本地保存著當(dāng)前項(xiàng)目的所有歷史更新。如果需要看N個(gè)版本之前的代碼對(duì)比,git會(huì)去取出N個(gè)版本之前的代碼和當(dāng)前的代碼進(jìn)行對(duì)比
4.提交代碼:svn需要在聯(lián)網(wǎng)的情況下才能提交代碼,git不需要,git是先commit到本地倉庫,然后在有網(wǎng)的時(shí)候再push到服務(wù)器
5.分支:??上面的一些區(qū)別主要是在沒有網(wǎng)絡(luò)情況下git會(huì)比svn有優(yōu)勢(shì),但是呢,在公司辦公的話沒有網(wǎng)絡(luò)或者服務(wù)器斷電的情況還是比較少的。來了解下git和svn最重要的區(qū)別:分支
在svn上:分支是一個(gè)完整的目錄,而且這個(gè)目錄擁有完整的實(shí)際文件。A開啟了分支,Bupadate的時(shí)候也會(huì)擁有A一樣的分支,如果A改壞了分支,那么B也就得重新切分支重新下載。
而且如果想知道是否合并了一個(gè)分支,需要手動(dòng)運(yùn)行像這樣的命令svn propget svn:mergeinfo,來確認(rèn)代碼是否被合并。
git:在本地版本庫可以切換想要的分支,只要不提交到主要的版本庫,就不會(huì)影響到其他的伙伴。
舉個(gè)??:1.0版本已經(jīng)提交上線,主分支上建立分支A開發(fā)2.0的版本,突然1.0版本有生產(chǎn)問題,那么就可以切回到主分支,在主分支建立一個(gè)新的分支B,在B分支修復(fù)生產(chǎn)問題,等待測試通過,會(huì)到主分支,并將B分支合并過來,push到遠(yuǎn)程倉庫。再切換到之前開發(fā)階段的A分支,這樣就可以保證開發(fā)進(jìn)度不會(huì)受到影響。
實(shí)際上svn和git兩個(gè)合并在提交到遠(yuǎn)程服務(wù)器上的操作是一樣的,有沖突改沖突,沒有沖突自動(dòng)合并。git的便捷在于有本地倉庫,輕松的建立分支,非常容易的切換分支,也不會(huì)影響到其他的伙伴。別人提交到主干的東西合并到自己的分支來。這樣做的好處在于沖突不會(huì)太多,然后將自己改好的功能分支合并到主干。
git相對(duì)于svn的缺點(diǎn):
1.學(xué)習(xí)成本:現(xiàn)在公司使用的代碼管理工具是svn,所以如果切換到git還是需要一定的學(xué)習(xí)成本的
2.跨平臺(tái):查資料說對(duì)windows的用戶不太友好,但是問過周邊使用過git的用戶,也有圖形化使用工具,用法和svn差不多,具體如何還有待考證
3.對(duì)于技術(shù)來說,可能Git比較好用,但是對(duì)于其他的同事來說,使用git去管理文件體驗(yàn)不太好。咨詢過周圍的測試還有設(shè)計(jì),都是使用svn。開發(fā)用git比較多。
4.權(quán)限管理:svn的權(quán)限管理相當(dāng)嚴(yán)格,按照組、個(gè)人某個(gè)目錄都有權(quán)限控制,git沒有嚴(yán)格的權(quán)限管理,沒有任何的保護(hù)機(jī)制。
總結(jié):
1.站在個(gè)人的角度來說,比較喜歡用git,因?yàn)闀?huì)很方便的管理代碼,當(dāng)有線上問題的時(shí)候,或者某一個(gè)版本未上線正在測試階段,進(jìn)行下一個(gè)版本的開發(fā),會(huì)感覺很方便。
2.從公司的角度出發(fā),建議使用svn,因?yàn)槲覀儸F(xiàn)在的項(xiàng)目并不多,同時(shí)迭代版本好像也不多,沒有很高頻次的協(xié)同合作,所以對(duì)于技術(shù)來說svn是夠用的,當(dāng)然不排除以后公司的快速發(fā)展是需要協(xié)同合作,多個(gè)迭代同時(shí)進(jìn)行的。上面也提到過對(duì)于非技術(shù)人員來說git的用戶體驗(yàn)不太好,但是具體如果還有待考察。