為什么Git 比SVN 更好
GIT是分布式源代碼管理,SVN稱之為集中式管理。
所謂集中管理,是指每個人本地只有一組文件,即更改過的文件,以及每個文件的更改記錄(存放在隱藏的svn目錄中)。大家把修改后的文件提交到同一個網(wǎng)絡(luò)中心服務(wù)器上。服務(wù)器上有完整的代碼歷史記錄。
分布式管理最大的區(qū)別在于,原來只能在網(wǎng)絡(luò)中心服務(wù)器上獲得的完整代碼歷史記錄,現(xiàn)在可以放在每個人自己的本地區(qū)域。這樣,當(dāng)你使用GIT來管理代碼時,就不需要有網(wǎng)絡(luò)連接了。您可以在本地提交代碼、查看歷史記錄、執(zhí)行回滾等操作。當(dāng)需要合并多人的代碼時,通過推送的方式將每個人本地的代碼記錄匯總到服務(wù)器上;當(dāng)每個人都需要更新時,從服務(wù)器拉取最新的代碼庫(而不僅僅是修訂版)。換句話說,源代碼管理是分布到每個人的單機(jī)上的。每個人處理自己單機(jī)的一些更新、回滾、自合并等功能,然后在服務(wù)器上進(jìn)行綜合合并操作。集中管理對一臺服務(wù)器合并的過度依賴已經(jīng)得到緩解。
分布式管理需要更復(fù)雜的邏輯來處理。但基于多人合作的前提下,每個人也可以在管理上各負(fù)其責(zé)。比如指定一個人單獨(dú)處理服務(wù)器合并,其他人只能做自己的工作。本地改變就足夠了,而不是集中管理。提交后,大家需要準(zhǔn)備合并代碼。
分布式管理采用分支機(jī)構(gòu)的概念來協(xié)同工作。每個人的代碼都是一個單獨(dú)的分支。當(dāng)服務(wù)器合并代碼時,分支被合并,并且更改被拉回到原來的分支。對于一些需要多個版本的代碼,控制分支的合并內(nèi)容是有好處的。并行抓好多個版本的開發(fā)工作。
總之,以GIT為代表的分布式源代碼管理更加系統(tǒng)、便捷,甚至更容易遷移(因?yàn)槊總€人都有獨(dú)立的完整代碼歷史記錄,不完全依賴于服務(wù)器)。但由于這些額外的細(xì)節(jié),GIT 比SVN 理解起來要復(fù)雜得多,需要仔細(xì)理解,門檻也比較高。一旦你熟悉了它,你就再也不想使用SVN了。