文章目錄
- GIT是分布式的,SVN不是:
- GIT把內容按中繼資料方式儲存,而SVN是按檔案:
- GIT分支和SVN的分支不同:
GIT不僅僅是個版本控制系統,它也是個內容管理系統(CMS),工作管理系統等。如果你是一個具有使用SVN背景的人,你需要做一定的思想轉換,來適應GIT提供的一些概念和特徵。所以,這篇文章的主要目的就是通過介紹GIT能做什麼、它和SVN在深層次上究竟有什麼不同來協助你認識它。
那好,這就開始吧…
- GIT是分布式的,SVN不是:
這是GIT和其它非分布式的版本控制系統,例如SVN,CVS等,最核心的區別。如果你能理解這個概念,那麼你就已經上手一半了。需要做一點聲明,GIT並不是目前第一個或唯一的分布式版本控制系統。還有一些系統,例如Bitkeeper, Mercurial等,也是運行在分布式模式上的。但GIT在這方面做的更好,而且有更多強大的功能特徵。
GIT跟SVN一樣有自己的集中式版本庫或伺服器。但,GIT更傾向於被使用於分布式模式,也就是每個開發人員從中心版本庫/伺服器上chect out代碼後會在自己的機器上複製一個自己的版本庫。可以這樣說,如果你被困在一個不能串連網路的地方時,就像在飛機上,地下室,電梯裡等,你仍然能夠提 交檔案,查看曆史版本記錄,建立項目分支,等。對一些人來說,這好像沒多大用處,但當你突然遇到沒有網路的環境時,這個將解決你的大麻煩。
同樣,這種分布式的操作模式對於開源軟體社區的開發來說也是個巨大的恩賜,你不必再像以前那樣做出補丁包,通過email方式發送出去,你只需要建立一個分支,向項目團隊發送一個推請求。這能讓你的代碼保持最新,而且不會在傳輸過程中丟失。GitHub.com就是一個這樣的優秀案例。
有些謠言傳出來說subversion將來的版本也會基於分布式模式。但至少目前還看不出來。
- GIT把內容按中繼資料方式儲存,而SVN是按檔案:
所有的資源控制系統都是把檔案的元資訊隱藏在一個類似.svn,.cvs等的檔案夾裡。如果你把.git目錄的體積大小跟.svn比較,你會發現它 們差距很大。因為,.git目錄是處於你的機器上的一個複製版的版本庫,它擁有中心版本庫上所有的東西,例如標籤,分支,版本記錄等。
- GIT分支和SVN的分支不同:
分支在SVN中一點不特別,就是版本庫中的另外的一個目錄。如果你想知道是否合并了一個分支,你需要手工運行像這樣的命令/questions/964331/git-file-integrity
GIT和SVN之間只有這五處不同嗎?當然不是。我想這5個只是“最基本的”和“最吸引人”的,我只想到這5點。如果你發現有比這5點更有趣的,請共用出來,歡迎。