SVN和GIT的區(qū)別?
1、背景介紹
在開發(fā)軟件或者進行文案工作時,經(jīng)常需要在原有的基礎(chǔ)上進行修改,但又擔心無法恢復原有內(nèi)容,因此一份文件可能會保存成多份,更可怕的是還得從堆積如山的文件中找出自己更改之前的內(nèi)容。版本控制系統(tǒng)可以記錄每次的文檔更改,并確保由不同人所編輯的同一文檔都得到更新,甚至還可以將數(shù)據(jù)恢復到以前的版本,所以大家也稱版本控制系統(tǒng)為神奇的“時間機器”。
2、什么是SVN?
SVN是Subversion的簡稱,是一個自由開源的版本控制系統(tǒng),支持大多數(shù)常見的操作系統(tǒng)。作為一個開源的版本控制系統(tǒng),Subversion管理著隨時間改變的數(shù)據(jù)。這些數(shù)據(jù)集中放置在一個中央資料檔案庫中。這個檔案庫很像一個普通的文件服務(wù)器,它會記住每一次文件的變動。這樣你就可以把檔案恢復到舊的版本,或是瀏覽文件的變動歷史。
集中式版本控制系統(tǒng)
版本庫是集中存放在中央服務(wù)器的,而工作的時候,用的都是自己的電腦,所以要先從中央服務(wù)器取得最新的版本,然后開始工作,工作結(jié)束后,再把自己的文件推送給中央服務(wù)器。
3、什么是git?
Git是開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項目。分布式相比于集中式的最大區(qū)別在于開發(fā)者可以提交到本地,每個開發(fā)者通過克隆(git clone),在本地機器上拷貝一個完整的Git倉庫。通俗的說,就是一個管理代碼歷史記錄的工具,當多人協(xié)作時可以相互推送各自的修改。
分布式代碼管理
分布式版本控制系統(tǒng)根本沒有“中央服務(wù)器”,每個人的電腦上都是一個完整的版本庫服務(wù)器。工作的時候,就不需要聯(lián)網(wǎng)了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協(xié)作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
4、SVN和Git有什么區(qū)別?
1.SVN屬于集中化的版本控制系統(tǒng),而Git是一個分布式版本控制系統(tǒng)。使用SVN,每個版本庫有唯一一個“官方地址”,每個用戶都從這個唯一地址獲取代碼、數(shù)據(jù);獲取代碼庫的更新,也只能連接到這個唯一的代碼庫,同步以取得最新數(shù)據(jù);提交必須有網(wǎng)絡(luò)連接(非本地版本庫)。
2.GIT跟SVN一樣有自己的集中式版本庫或服務(wù)器。但GIT更傾向于被使用于分布式模式,也就是每個開發(fā)人員從中心版本庫/服務(wù)器上check out代碼后會在自己的機器上克隆一個自己的版本庫。可以這樣說,如果你被困在一個不能連接網(wǎng)絡(luò)的地方時,你仍然能夠提交文件,查看歷史版本記錄,創(chuàng)建項目分支,對一些人來說,這好像沒多大用處,但當你突然遇到?jīng)]有網(wǎng)絡(luò)的環(huán)境時,這個將解決你的大麻煩。
3.GIT把內(nèi)容按元數(shù)據(jù)方式存儲,而SVN是按文件:GIT會在本地存儲項目下的所有文件,因為本地存儲的是一個遠端的克隆版本,而svn則只需要checkout你需要的那部分代碼文件到本地即可。所以通常本地的git目錄的大小要遠遠大于svn的目錄。
4.SVN的全局版本號,每一個事物處理(即一次提交)都具有整個版本庫全局唯一的版本號。SVN 的版本號是連續(xù)的,可以預判下一個版本號。因為 SVN 是集中式版本控制,當然很容易實現(xiàn)版本號的連續(xù)性。GIT是分布式版本控制,多人在同一個版本庫里工作,如果大家都用1,2,3……作為版本號,那肯定就沖突了。所以采用 40 位長的哈希值作為版本號,版本號是全球唯一的。
5.GIT的內(nèi)容完整性要優(yōu)于SVN:GIT的內(nèi)容存儲使用的是SHA-1哈希算法。這能確保代碼內(nèi)容的完整性,確保在遇到磁盤故障和網(wǎng)絡(luò)問題時降低對版本庫的破壞。