git與svn的區別面試

shkstart發表於2022-01-17

Git是分散式版本控制系統,它沒有中央伺服器,每個人的電腦就是一個完整的版本庫,這樣工作的時候就不需要聯網了,因為版本都是在自己的電腦上。既然每個人的電腦都有一個完整的版本庫,那多個人如何協作呢?比如說自己在電腦上改了檔案A,其他人也在電腦上改了檔案A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

下圖就是分散式版本控制工具管理方式:

 Git與SVN的區別

Git不僅僅是個版本控制系統,它也是個內容管理系統(CMS),工作管理系統等。

如果你是一個具有使用SVN背景的人,你需要做一定的思想轉換,來適應Git提供的一些概念和特徵。 java培訓

Git 與 SVN 區別點:

Git是分散式的,SVN不是:這是Git和其它非分散式的版本控制系統,例如SVN,CVS等,最核心的區別。

Git把內容按後設資料方式儲存,而SVN是按檔案:所有的資源控制系統都是把檔案的元資訊隱藏在一個類似.svn,.cvs等的資料夾裡。

Git分支和SVN的分支不同:分支在SVN中一點不特別,就是版本庫中的另外的一個目錄。

Git沒有一個全域性的版本號,而SVN有:目前為止這是跟SVN相比GIT缺少的最大的一個特徵。

Git的內容完整性要優於SVN:Git的內容儲存使用的是SHA-1雜湊演算法。這能確保程式碼內容的完整性,確保在遇到磁碟故障和網路問題時降低對版本庫的破壞。

 Git 與其他版本管理系統的區別

Git 在儲存和對待各種資訊的時候與其它版本控制系統有很大差異,儘管操作起來的命令形式非常相近,理解這些差異將有助於防止你使用中的困惑。

下面我們主要說一個關於 Git 其他版本管理系統的主要差別:對待資料的方式。

Git採用的是直接記錄快照的方式,而非差異比較。

大部分版本控制系統(CVS、Subversion、Perforce、Bazaar 等等)都是以檔案變更列表的方式儲存資訊,這類系統將它們儲存的資訊看作是一組基本檔案和每個檔案隨時間逐步累積的差異。

具體原理如下圖所示,理解起來其實很簡單,每個我們對提交更新一個檔案之後,系統記錄都會記錄這個檔案做了哪些更新,以增量符號Δ(Delta)表示。下圖來源於Git官網。

我們怎樣才能得到一個檔案的最終版本呢?

很簡單,高中數學的基本知識,我們只需要將這些原檔案和這些增加進行相加就行了。

這種方式有什麼問題呢?

比如我們的增量特別特別多的話,如果我們要得到最終的檔案是不是會耗費時間和效能。

Git 不按照以上方式對待或儲存資料。 反之,Git 更像是把資料看作是對小型檔案系統的一組快照。 每次你提交更新,或在 Git 中儲存專案狀態時,它主要對當時的全部檔案製作一個快照並儲存這個快照的索引。 為了高效,如果檔案沒有修改,Git 不再重新儲存該檔案,而是隻保留一個連結指向之前儲存的檔案。 Git 對待資料更像是一個 快照流。

版權宣告:本文為原創文章,轉載請附上原文出處連結及本宣告。下載相關影片學習資料到尚矽谷官方網站。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27721058/viewspace-2852570/,如需轉載,請註明出處,否則將追究法律責任。

相關文章