自從有了git,很多開源專案都轉移到了git。對於我們初學版本管理的人來說,git和svn究竟有什麼不同的地方呢?最近粗略了解了下git,並與svn做了一番比較,大概結果如下:
svn vs git
一,集中式 vs 分布式
svn是典型的c/s模式的集中式管理。客戶端直接對服務端做各種操作。而git則大不相同,他是分布式的,而且我們使用git命令大多數時候,只是在本地進行操作。當本地的內容完成以後,才使用push這樣的命令把他推送到伺服器上的庫中。
二,增量儲存 vs 快照
svn在儲存文字檔案的時候,如果產生乙個新版本,那麼儲存的只是兩個版本的差異。而git的則是每個版本的快照。這一點來看,svn能節省空間,但是git則更方便訪問檔案。
三,svn分支 vs git分支
svn的分支,僅僅是乙個url拷貝。在處理分支合併的時候,效率不高。git的分支則更加方便,任何一分支的建立,僅僅是儲存乙個41位元組的指標而已。我們來看看svn的分支建立:
shell**
$svn copy file:repos/idp/trunk file:///epos/idp/branches/mybranch
從上面的語句可以看出,svn的分支就是乙個hard link的目錄。
再來看看git的分支。
shell**
$git branch mybranch
在git中,建立分支是很廉價的,並且,對於分支的合併也是很容易。git 希望使用者可以多使用分支。這裡,如果要切換到分支,在git中使用
shell**
$git checkout mybranch
就可以了。
四,全域性版本 vs 全球版本
svn的版本號應該叫修訂版本號。因為他是針對一次提交,並不是某個檔案的版本。並且以數字來作為版本號,遞增。git的版本號 是一串sha-1 雜湊的字串。這個雜湊是針對檔案內容,並且發生碰撞的機率可以是微乎其微。即使全球的人一起工作,也很難產生乙個衝突。
五,記錄一切 vs 回滾
svn是一部時光機,錯了就錯了,不可能得到完美的回滾或撤銷(使用一些很**的手法,也許可以達到這個目的)。git 支援回滾。如果要刪除提交:
shell**
$git revert head
mac的svn之cornerstone簡易教程
分步閱讀 背景 關於cornerstone的介紹很少 這裡介紹mac的圖形化介面的svn工具的簡易使用 在launchpad選擇conerstone 主介面 左側工作目錄及倉庫區域 右側為主要操作區 首先新增現有的svn倉庫,有cloud service file repository http s...
mac的svn之cornerstone簡易教程
背景 關於cornerstone的介紹很少 這裡介紹mac的圖形化介面的svn工具的簡易使用 在launchpad選擇conerstone 主介面 左側工作目錄及倉庫區域 右側為主要操作區 首先新增現有的svn倉庫,有cloud service file repository http server...
GIT與SVN的區別以及SVN轉GIT
公司部分專案開始使用的svn,需要通過svn轉成git,通過查詢可以用git的svn命令,不過在培訓時候找到一些svn與git的區別 分布式檔案系統,每個人都有完整的 分支對svn來說是完整目錄,建立分支需要重新配置,git建立分支相當簡單 git可以離線檢視log日誌 svn提交實際提交到 倉庫,...