話說Svn與Git的區別

把第一條理解到位思想到位了做起來才會有的放矢,其他幾條都是用的時候才能體會到

?? 1) 最核心的區別Git是分布式的,而Svn不是分布的。能理解這點,上手會很容易,聲明一點Git并不是目前唯一的分布式版本控制系統,還有比如Mercurial等,所以說它們差不許多。話說回來Git跟Svn一樣有自己的集中式版本庫和Server端,但Git更傾向于分布式開發,因為每一個開發人員的電腦上都有一個Local Repository,所以即使沒有網絡也一樣可以Commit,查看歷史版本記錄,創建項 目分支等操作,等網絡再次連接上Push到Server端。

從上面看GIt真的很棒,但是GIt adds Complexity,剛開始使用會有些疑惑,因為需要建兩個Repositories(Local Repositories & Remote Repositories),指令很多,除此之外你需要知道哪些指令在Local Repository,哪些指令在Remote Repository。

?? 2)Git把內容按元數據方式存儲,而SVN是按文件:因為,.git目錄是處于你的機器上的一個克隆版的版本庫,它擁有中心版本庫上所有的東西,例如標簽,分支,版本記錄等。.git目錄的體積大小跟.svn比較,你會發現它們差距很大。

?? 3) Git沒有一個全局版本號,而SVN有:目前為止這是跟SVN相比Git缺少的最大的一個特征。

?? 4) Git的內容的完整性要優于SVN: GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞。

?? 5) Git下載下來后,在OffLine狀態下可以看到所有的Log,SVN不可以。

?? 6) 剛開始用時很狗血的一點,SVN必須先Update才能Commit,忘記了合并時就會出現一些錯誤,git還是比較少的出現這種情況。

?? 7)?克隆一份全新的目錄以同樣擁有五個分支來說,SVN是同時復製5個版本的文件,也就是說重復五次同樣的動作。而Git只是獲取文件的每個版本的 元素,然后只載入主要的分支(master)在我的經驗,克隆一個擁有將近一萬個提交(commit),五個分支,每個分支有大約1500個文件的 SVN,耗了將近一個小時!而Git只用了區區的1分鐘!

?? 8)?版本庫(repository):SVN只能有一個指定中央版本庫。當這個中央版本庫有問題時,所有工作成員都一起癱瘓直到版本庫維修完畢或者新的版本庫設立完成。而 Git可以有無限個版本庫。或者,更正確的說法,每一個Git都是一個版本庫,區別是它們是否擁有活躍目錄(Git Working Tree)。如果主要版本庫(例如:置於GitHub的版本庫)發生了什麼事,工作成員仍然可以在自己的本地版本庫(local repository)提交,等待主要版本庫恢復即可。工作成員也可以提交到其他的版本庫!

?? 9)分支(Branch)在SVN,分支是一個完整的目錄。且這個目錄擁有完整的實際文件。如果工作成員想要開啟新的分支,那將會影響“全世界”!每個人都會擁有和你一樣的分支。如果你的分支是用來進行破壞工作(安檢測試),那將會像傳染病一樣,你改一個分支,還得讓其他人重新切分支重新下載,十分狗血。而 Git,每個工作成員可以任意在自己的本地版本庫開啟無限個分支。舉例:當我想嘗試破壞自己的程序(安檢測試),并且想保留這些被修改的文件供日后使用, 我可以開一個分支,做我喜歡的事。完全不需擔心妨礙其他工作成員。只要我不合并及提交到主要版本庫,沒有一個工作成員會被影響。等到我不需要這個分支時, 我只要把它從我的本地版本庫刪除即可。無痛無癢。

??? Git的分支名是可以使用不同名字的。例如:我的本地分支名為OK,而在主要版本庫的名字其實是master。

? ? 最值得一提,我可以在Git的任意一個提交點(commit point)開啟分支!(其中一個方法是使用gitk –all 可觀察整個提交記錄,然后在任意點開啟分支。)

??? 10)提交(Commit)在SVN,當你提交你的完成品時,它將直接記錄到中央版本庫。當你發現你的完成品存在嚴重問題時,你已經無法阻止事情的發生了。如果網路中斷,你根本沒辦法提交!而Git的提交完全屬於本地版本庫的活動。而你只需“推”(git push)到主要版本庫即可。Git的“推”其實是在執行“同步”(Sync)。

最后總結一下:

SVN的特點是簡單,只是需要一個放代碼的地方時用是OK的。

Git的特點版本控制可以不依賴網絡做任何事情,對分支和合并有更好的支持(當然這是開發者最關心的地方),不過想各位能更好使用它,需要花點時間嘗試下。



作者:白袍君
鏈接:http://www.jianshu.com/p/bfec042349ca
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387452.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387452.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387452.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu下Postgres安裝與配置

postgres8.4安裝配置:1.安裝postgres8.4~$ sudo apt-get install postgresql 2.修改超級管理員postgres密碼:以系統用戶運行psql~$ sudo -u postgres psql postgres修改postgres密碼(123456)postgres# /password postgres 3.備份修改的配置文件&#xff…

2.11 queue

#include<queue> 先進先出&#xff08;First In First Out, FIFO&#xff09; 隊尾插入&#xff0c;隊首刪除 queue<int> q; q.push(1); //入隊 int qf q.front(); //獲取隊首元素 int qe q.back(); //獲取隊尾元素 q.pop(); //出隊 q.size(); //大小 q.…

簡易中控紫貓插件版(3)壓縮包使用說明

1.環境配置腳本運行環境&#xff1a;沒什么說的 正常的最新版手機按鍵 當然還需要 最新的紫貓插件中控運行環境&#xff1a;首先要保證把壓縮包的所有php文件都扔到網站的根目錄下 必須保證網站的php版本是5.4 不然紫貓插件的php框架會出問題 然后你要知道網站數據庫的賬號和密…

Java9新特性

Java 8 發布三年多之后&#xff0c;即將快到2017年7月下一個版本發布的日期了。 你可能已經聽說過 Java 9 的模塊系統&#xff0c;但是這個新版本還有許多其它的更新。 這里有九個令人興奮的新功能將與 Java 9 一起發布。 1. Java 平臺級模塊系統 Java 9 的定義功能是一套全新的…

IOS 應用中從豎屏模式強制轉換為橫屏模式

在 iPhone 應用里&#xff0c;有時我們想強行把顯示模式從縱屏改為橫屏&#xff08;反之亦然&#xff09;&#xff0c;CocoaChina 會員 “alienblue” 為我們提供了兩種思路第一種&#xff1a;通過人為的辦法改變view.transform的屬性。具體辦法&#xff1a;view.transform一般…

2.12 priority_queue

#include<queue> priority_queue與queue的不同&#xff1a;最大元素位于隊首 priority_queue<int> pq; pq.push(1); //入隊 pq.pop(); //出隊 int i pq.top(); //獲取隊首元素 pq.size(); //大小 pq.empty(); //判空 如果隊列元素是結構體&#xff0c;重載&…

vue資料鏈接

vue 官方api&#xff1a;https://cn.vuejs.org/ vue資源精選&#xff1a;http://vue.awesometiny.com/ vue GitHub地址&#xff1a;https://github.com/vuejs/vue element-ui 官方中文api&#xff1a;http://element-cn.eleme.io/#/zh-CN/component/dropdown swiper中文網&…

Java面試常見算法

在程序員的職業生涯中&#xff0c;算法亦算是一門基礎課程&#xff0c;尤其是在面試的時候&#xff0c;很多公司都會讓程序員編寫一些算法實例&#xff0c;例如快速排序、二叉樹查找等等。 本文總結了程序員在代碼面試中最常遇到的10大算法類型&#xff0c;想要真正了解這些算法…

高仿人人Android夢想版終極源碼發送(轉)

經過幾個月的努力,終于基本完成了人人API擁有的所有功能,界面采用仿照人人夢想版5.13制作,其中資源文件也采用人人的APK文件資源,完成的功能及知識點如下:1.通過三種動畫仿照出人人引導頁的放大切換圖片的效果。2.通過重寫ViewGroup仿照出人人菜單和其他界面的手勢滑動切換效果…

HBase 基本Java API

數據庫&#xff1a;HBaseConfiguration HBaseAdmin 表&#xff1a;HTable HTableDescriptor 列族&#xff1a;HColumnDescriptor 行列操作&#xff1a;Put Get Scanner HBaseConfiguration: Configuration create() //從classpath中查找hbase-site.xml初始化Configu…

A1075.PAT Judge

題意 輸入k個程序的每個程序的滿分分數&#xff0c;再輸入m條用戶提交的記錄。按要求進行分數的排序最后輸出。是一道結構體的復雜排序 思路分析 首先明確本題的輸出要求&#xff1a; 編譯失敗的提交分數為-1。只有至少成功提交過一次程序(沒有編譯失敗),的用戶才會被排序。可以…

android 實現SSL握手協商

Android的私鑰和信任證書的格式必須是BKS格式的&#xff0c;通過配置本地JDK&#xff0c;讓keytool可以生成BKS格式的私鑰和信任證書,java本身沒有BouncyCastle密庫 ssl通道建立前必須進行協商&#xff08;形成安全的通道--隧道技術&#xff09;。 服務端&#xff1a; View Co…

同步阻塞的BIO、同步非阻塞的NIO、異步非阻塞的AIO

IO的方式通常分為幾種&#xff0c;同步阻塞的BIO、同步非阻塞的NIO、異步非阻塞的AIO。 一、BIO 在JDK1.4出來之前&#xff0c;我們建立網絡連接的時候采用BIO模式&#xff0c;需要先在服務端啟動一個ServerSocket&#xff0c;然后在客戶端啟動Socket來對服務端進行通信&#x…

1 概述

Unix C TCP/IP 三位一體 Linux天生是網絡操作系統 程序員的學習&#xff1a;不斷地敲代碼&#xff0c;不斷地看別人的代碼。 Linux兩大領域&#xff1a; &#xff08;1&#xff09;服務器 &#xff08;2&#xff09;嵌入式設備 www.netcraft.com 查看網站服務器系統 VMware快…

對我影響最大的三位老師

讀書也讀了那么多年了&#xff0c;遇見了許多的老師&#xff0c;他們教不同的科目&#xff0c;各司其職&#xff0c;兢兢業業的做著自己的本職工作。在我的學生時代印象最深的有三位老師。第一位是我的初中語文老師鄒老師&#xff0c;他上課非常有趣&#xff0c;語文課&#xf…

Java Annotation認知(包括框架圖、詳細介紹、示例說明)

摘要 Java Annotation是JDK5.0引入的一種注釋機制。 網上很多關于Java Annotation的文章&#xff0c;看得人眼花繚亂。Java Annotation本來很簡單的&#xff0c;結果說的人沒說清楚&#xff1b;弄的看的人更加迷糊。 我按照自己的思路&#xff0c;對Annotation進行了整理。理解…

matlab練習程序(RGB2HSL、HSL2RGB)

色相飽和度亮度和三原色的相互轉換 function mainimgimread(lena_color.jpg);imgmat2gray(img); %任意區間映射到[0,1];[m n dim]size(img);imshow(img);%%圖像的RGBRimg(:,:,1);Gimg(:,:,2);Bimg(:,:,3);%%圖像RGB2HSLHzeros(m,n); %色相角Szeros(m,n); %飽和度Lzeros(m,…

2 文件處理、權限管理、搜索

文件處理命令&#xff1a; ls -a -l -d -h -i mkdir -p parents cd . .. /tmp/Japan pwd rmdir cp -r -p source destination 可改名recursive preserve mv source destination 剪切文件 改名 ctrl l 清屏 或者 clear命令 rm -r -f touch 新建文件 帶空格需加…

第38節: Vue3 鼠標按鈕修改器

在UniApp中使用Vue3框架時&#xff0c;你可以使用按鍵修飾符來更精確地處理鍵盤事件。以下是一個示例&#xff0c;演示了如何在UniApp中使用Vue3框架使用.left、.right和.middle按鍵修飾符&#xff1a; <template> <view> <input keydown"handleKeyDown&…

Go語言學習之3 流程控制、函數

主要內容&#xff1a; 1. strings和strconv使用2. Go中的時間和日期類型3. 指針類型4. 流程控制5. 函數詳解 1. strings和strconv使用 //strings 1. strings.HasPrefix(s string, prefix string) bool&#xff1a;判斷字符串s是否以prefix開頭 。 2. strings.HasSuffix(s strin…