1. 程式人生 > >【Git】Git 與 SVN 的區別概述

【Git】Git 與 SVN 的區別概述

  日常工作中,經常會用到版本控制工具,目前用到的比較廣泛的版本控制工具就是 SVN 和 Git 。這裡對兩者的區別做個簡單概述。

定義

  SVN:是一個遠端集中式的版本控制系統,與 RCS、CVS 比較來說,SVN 採用了分支管理系統,其設計的目的是為了取代 CVS
  Git:是一個開源的分散式版本控制系統,可以有效、高速地處理從小到非常大的專案版本管理
  

主要區別

1.儲存方式區別

  Git 把內容按照元資料的方式來儲存(類似於 Key/Value 資料庫的形式),而 SVN 則是按照檔案的形式儲存。換句話可以這樣理解,Git 是將檔案中的內容取出來存到資料庫當中,而 SVN 則是將檔案進行拷貝。
  可以說幾乎所有的版本系統都是將檔案的元資訊隱藏在類似 .svn、.cvs 等資料夾當中。而 .git 資料夾可以說是本地機器上的一個克隆版的版本倉庫,它包含了遠端中心版本倉庫上的所有東西,例如標籤,分支,版本記錄等等。所以將 .git 資料夾的體積大小與 .svn 進行比較,會發現兩者的差距很大。

2.使用方式區別
SVN 基本使用過程
圖1 SVN 基本使用過程 Git 基本使用過程
圖2 Git 基本使用過程

  從本地將新增或修改的檔案推送至遠端倉庫過程當中,SVN 只需要 commit 一個步驟就夠了,而 Git 則需要經過 addcommitpush 三個步驟。

3.版本管理模式區別

  Git 是一個分散式的版本管理系統,而 SVN 是一個遠端集中式的管理系統。

SVN 集中式管理模式
圖3 SVN 集中式管理模式

  在這裡我們的 SVN 只支援一個遠端倉庫,如果說我們的遠端 SVN 倉庫掛掉了,那麼本地專案就不能夠進行提交、分支的切換等版本相關的任何操作。這也是集中式管理系統所存在的一個缺陷。

Git 分散式管理模式
圖4 Git 分散式管理模式

  本地 Git 倉庫是跟著專案走的,而不是跟著本機走的。也就是說一個專案內包含一個完整的 Git 倉庫,多個專案會包含多個 Git 倉庫。遠端 Git 倉庫能做的事情,本地 Git 倉庫也能做,例如程式碼的提交、版本的回滾、分支的切換等操作。當然本地 Git 倉庫也直接能和我們的遠端 Git 倉庫進行關聯,Git 提供四種通訊協議(localsshhttpgit)來支援與遠端倉庫的連線。Git 還支援多個遠端倉庫,即一個本地 Git 倉庫能夠連線多個遠端 Git 倉庫。

相關推薦

js ajax axios 區別 ajax axios區別

ajax 與 axios區別 Ajax: Ajax 即“Asynchronous Javascript And XML”(非同步 JavaScript 和 XML),是指一種建立互動式網頁應用的網頁開發技術。 Ajax = 非同步 JavaScript 和

GNSSRTKDGNSS區別

差分GPS定位原理 它使用一臺 GPS基準接收機(基準站)和一臺使用者接收機(移動站),利用實時或事後處理技術,就可以使使用者測量時消去公共的誤差源 —衛星軌道誤差、衛星鐘差、大氣延時、多路徑效應。特別提出的是,當GPS工作衛星升空時,美國政府實行了SA政策。使衛星的軌道

作業系統記憶體管理概述

轉自: https://blog.csdn.net/bitboss/article/details/70154146   —–要說到作業系統的堆與記憶體的管理的話,那內容真的是海了去了,從開始的地方就能不停的擴充套件,但內容的重要性也是不可言喻的,本片部落格著重於總結以下

VectorArrayList區別

1. Vector & ArrayList 1)  Vector的方法都是同步的(Synchronized),是執行緒安全的(thread-safe),而ArrayList的方法不是,由於執行緒的同步必然要影響效能,因此,ArrayList的效能比Vector好

CC99C89區別以及轉換方法

DATE: 2018.11.14 1、 C99與C89區別: 可變長陣列   C99中,程式設計師宣告陣列時,陣列的維數可以由任一有效的整型表示式確定,包括只在執行時才能確定其值的表示式,這類陣列就叫做可變長陣列,但是隻有區域性陣列才可以是變長的. 可變長陣

GitGit SVN區別概述

  日常工作中,經常會用到版本控制工具,目前用到的比較廣泛的版本控制工具就是 SVN 和 Git 。這裡對兩者的區別做個簡單概述。 定義   SVN:是一個遠端集中式的版本控制系統,與 RCS、CVS 比較來說,SVN 採用了分支管理系統,其設計的目的是

Git的安裝使用

git刪除 菜單 選擇 輸入 是我 不同的 沒有權限 ref 控制   Git作為分布式的版本控制器有其獨特的優勢,可以不依賴與網絡而進行版本控制,而SVN則必須有網才可以。今天咱們不討論Git與SVN的具體區別。咱們先看看Git這個分布式版本控制器是怎麽玩的。下面的內容是

從零開始Java1Gitsvn

什麽 tortoise ava 註冊 命令 用戶 https and 哪裏 閑聊 幹活快一年了吧,感覺工作中能幹的事情也有一點了,但總有種不通透的感覺,查一個問題,能一路查出一堆不明白的東西。 之前新建過文檔是記錄點點滴滴的知識的,使用上沒問題了,但原理什麽的還是不懂,想了

Git衝突解決方法 Git衝突解決方法

本文轉載自:https://www.cnblogs.com/gavincoder/p/9071959.html Git衝突與解決方法 1、git衝突的場景 情景一:多個分支程式碼合併到一個分支時; 情景二:多個分支向同一個遠端分支推送程式碼時; 實際上,push操作即是將

Git使用方法教程&GitSVN區別

  工作到現在一直使用的版本控制管理器都是SVN,最近開始接觸學習Git,下面是筆者根據教程,整理出的一些實用性比較強的簡單命令。在文章的後面附上Git與SVN的一些區別。 一、Git使用教程  1. git四大域  git四大域:工作目錄,暫存區,倉庫,遠端倉庫。git對檔案的操作都是在四大域上

轉載CreateThread_beginthreadex本質區別

wmi ted 函數返回值 rar turn 問題 初始化 控制 switch 轉載文章,原文地址:http://blog.csdn.net/morewindows/article/details/7421759 本文將帶領你與多線程作第一次親密接觸,並深入分析Cr

gitGit 提示fatal: remote origin already exists 錯誤解決辦法

遠程 分享 mage mod dal -s lock 解決 ack 今天使用git 添加遠程github倉庫的時候提示錯誤:fatal: remote origin already exists. 最後找到解決辦法如下: 1、先刪除遠程 Git

GITGit Flow最佳實踐

【GIT】Git Flow最佳實踐

gitgit分支的合並

stat diff 出錯 傳輸 .html read 簡單 流程 保存 原文: http://gitbook.liuhui998.com/3_3.html http://gitbook.liuhui998.com/5_3.html 一、如何分支的合並 在gi

gitgit add 添加錯文件 撤銷

strong 可能 git reset status reset 表示 其他 多余 如果 git add 添加 多余文件 這樣的錯誤是由於, 有的時候 可能 git add . (空格+ 點) 表示當前目錄所有文件,不小心就會提交其他文件 git add 如果添加了錯誤的

innerHTMLjQuery裏的html()區別介紹

word www. 函數 利用 table ber order light syntax http://www.jb51.net/article/31548.htm 1、 2、 innerHTML與jquery裏的html()區別介紹 轉載 2012-10-12 投

Gitgit add git commit

it管理 commit clas add div blog 命令 第一次 修改 第一次修改 -> git add -> 第二次修改 -> git commit 你看,我們前面講了,Git管理的是修改,當你用git add命令後,在工作區的第一次修改被放入暫

git修改文件後,提交到遠程倉庫

log csdn 文件 遠程 ase git add 提交 gin mon 原文地址:https://blog.csdn.net/nly19900820/article/details/73613654 修改文件後,怎麽提交到遠程倉庫1.git status 查看git是否

GitlabGIT回滾master分支到指定tag版本 並提交遠程倉庫

git master 回滾【Gitlab】GIT回滾master分支到指定tag版本 並提交遠程倉庫1 查看分支git branch 2 切換到master分支git checkout master 3 查看標簽git tagv1.3.3v1.3.4v1.3.5 4 查看某個標簽的詳情git show v1.

GitGit常見問題

無法 形式 解決 編輯 ssh-key 配置 命令顯示 復制到剪切板 差異 1. Windows Git命令顯示中文亂碼 問題描述 在命令行中,輸入Git命令,例如“git status”,系統中的中文路徑顯示為特殊編碼。如下所示: modified: "\345\2