簡記git與SVN

來源:互聯網
上載者:User

標籤:檔案   資料   ar   問題   div   代碼   工作   管理   

svn與git是目前比較主流的版本控制系統,在這裡簡單記錄一下它們之間的異同。

 一,從架構來說,SVN是集中式,git是分布式。 集中式的優點是代碼高度統一,缺點也很明顯就是非常依賴於中央伺服器。如果伺服器宕機或者本地 無法連網,那麼你將無法提交更新、還原、對比等,也就無法協同工作。同時SVN上的提交也並非是 每次都成功,如果有一個人在你提交的時候先提交,那麼就會提示你先更新再提交。SVN原理上只關 心檔案內容的具體差異,每次記錄有哪些檔案做了更新並且更新了哪些內容。 而分布式的git會在本地複製一個自己的版本庫,在無法連網的時候,依然能夠提交檔案,查看曆史版 本記錄等。Git中每個版本庫都是平等的。與SVN不同,Git只關心檔案資料的整體是否發生變化,Git 並不儲存檔案內容前後變化的差異資料,更像是把變化的檔案作快照後記錄在一個微型的檔案系統中 (為提高效能,沒有變化的檔案不會再次儲存)。  二,版本庫與工作區的差異 SVN的版本庫與工作區是分離的。工作區在你本地檢出的那個目錄,它是一份版本庫在某個曆史狀態 下的快照。SVN的工作區中每個目錄下都包含一個名為.svn的控制目錄(隱藏目錄)。 git的版本庫與工作區在同一個目錄下,工作區的根目錄有一個.git的子目錄。git的工作區必須要有.git 目錄,它是用來儲存中繼資料和對象資料庫的地方,並且Git的工作區下只有一個.git目錄,此外再無任何 控制目錄,如果刪除它,則破環了整個曆史,版本庫也永遠失去了。(可以在工作區之外複製一個版 本庫,並且經常把提交push到裡面,這樣就實現了資料備份。)  三,SVN採用全域版本號碼,且是連續的。Git是通過對檔案的內容或目錄的結構計算出一個雜湊值,是 40為的十六進位字串,它是全球唯一的。  四,SVN可以部分檢出,而git只能全部檢出。  五,SVN的更新可以使工作區和版本庫保持一致,git上通過git fetch(fetch將遠端資料庫的object拷貝 到本地)和git pull(pull相當於fetch+merge)來完成遠程更新任務。  六,提交與分支 SVN裡的分支就是一個子目錄,和普通的路徑沒有什麼本質的區別。而git的分支僅是一個檔案,所以 你可以在同一個工作目錄下快速的在幾個分支間切換。git的分支是完全隔離的。 SVN的提交是單線索的,它的提交鏈只有一條。Git的提交是多線索,提交鏈可以有多條。 在svn中,你無法去撤銷提交,只能在後續的提交中修正。SVN有一個特性是它的資訊從不丟失,即使 刪除了,也可以在早期版本中找到。 Git的程式碼程式庫屬於個人,允許任意修改。Git通過git reset -hard可以永遠丟棄最新的一個或幾個提交。  總結:   SVN邏輯明確,符合一般人思維習慣;易於管理,集中式伺服器更能保證安全性;代碼一致性非常 高;適合開發人數不多的項目。缺點是,伺服器壓力太大,資料庫容量暴增;如果不能串連到伺服器 上基本不可以工作。   Git適合分布式開發,強調個體;公用伺服器壓力和資料量都不會太大;離線工作;任意兩個開發人員之 間很容易解決問題。缺點是,學習周期較長,代碼保密性差。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.