亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
慕課專欄

目錄

索引目錄

Git原理詳解與實操指南

原價 ¥ 49.00

立即訂閱
01 開篇詞:為什么要使用 Git?
更新時間:2020-04-20 12:45:30
才能一旦讓懶惰支配,它就一無可為。——克雷洛夫

在開發項目的時候,我們可能會不斷地去修改代碼,但是有時候會遇到,想查看某一時間的代碼這種情況,如果沒有版本控制器,你可能需要不斷地定時備份代碼,但這樣顯然是很麻煩的,而且備份也不一定好用,比如某個時間點并沒有修改代碼,那么備份就重復了;再比如雖然備份了代碼,但你并不知道兩個版本有什么區別。

1.1 版本控制系統

為了解決上面的一些問題,一些工程師便嘗試開發代碼版本控制器系統;每次當你修改完代碼想進行備份時,只需要輸入簡單的命令,版本控制系統便會幫你完成備份操作;

在完成這個備份時候,大體會做這幾件事情,首先把當前代碼哈希一下,得到一個哈希 (hash) 值,同時把這個哈希值分配一個版本號,比如上一次的版本號是2,那么這次的版本號便會是3,用來保證它的順序性;接著會比較當前的版本與上次版本的一些差異,包括文件差異,和文件里面的內容差異,并且會把這些差異單獨存儲起來,當你之后想看某一刻的修改時,可以非常方便地查看。

上面提到的是版本控制系統的最基本功能,因為實際需求不同,所以版本控制器也有不同的類型,最為常見的就是分布式版本控制系統和中央版本控制系統。

1.2 中央版本控制系統

中央版本控制系統必須存在兩個端,服務端和客戶端,當進行代碼備份時,客戶端會向服務端發出請求,并將此次修改的內容發送到服務器當中去;服務端收到請求后,會將代碼存儲在服務器當中;同樣當客戶端想查看某一個版本的修改內容或者想恢復到某一個版本之時,客戶端也會發送請求到服務端,服務在端接收到請求之后會做出相應的處理并返回給客戶端。

圖片描述

從圖中可以看到當提交代碼時候,兩個客戶端都是把數據推送服務器當中去,拉取的時候代碼也都是從服務器中獲取,可以看出這是非常典型的 C/S 機制;張三和李四的交互都必須通過中央服務器,不能私下直接訪問。

1.3 分布式版本控制系統

分布式版本控制器,主要是將備份的代碼以及記錄完全獨立在本地存儲,比如說上面提到,當你想將代碼恢復到某一個版本的時候,本地版本控制器,不需要依賴網絡便可以完成此操作,因為本地版本控制器擁有完整獨立的控制系統。

圖片描述

從圖中可以看出,張三和李四不僅僅可以向服務器推送代碼,服務器也可以向客戶端推送代碼;并且張三和李四還可以互相推送代碼,同樣拉取代碼也可以從任意一個節點中拉取,而不必從服務器中拉取。

所以從分布式版本控制系統本身的功能來說,它們是完全平等的,每一個系統都擁有全部的功能;但在實際的工作中我們為了更好地管理代碼版本,會人為設置一些規則來限制代碼推送,所以在圖中的紅色線條通常是不會使用的,另外服務端通常也不會去主動向客戶端推送和拉取代碼。

1.4 GIT 和 SVN

前面提到兩種版本控制系統,我估計不少人會糾結該怎么去選擇版本控制系統,這里我提一下我的一些看法:目前主流的版本控制系統主要有GitSVN,各自分別代表分布式版本控制系統和中央版本控制系統,兩個工具各有優勢。為了在后面的文章當中方便大家理解,后面將直接使用GitSVN來表述分布式版本控制系統和中央版本控制系統,下面我主要從功能、熱度、難度上來進行分析GitSVN的優勢與劣勢。

1.4.1 功能豐富

Git最大的優勢在于功能更加豐富,雖然大部分功能在SVN上也都有,但是卻極不方便,比如說分支功能。在Git中每個客戶端都可以自由創建分支,而SVN中必須由服務端創建,客戶端才能拉取,但實際工作中很少會在服務端執行SVN命令;再比如說,在沒有網絡的情況下,Git依然可以提交代碼,而SVN則不行,因為必須連接服務器才可以提交。當然功能上還有很多區別,這里只是舉了兩個主要的區別,在實際操作中Git的功能遠遠多于SVN。

1.4.2 流行熱度

在選擇一個軟件的時候,我覺得很多人也會看流行度怎么樣。在 5 年以前,可能SVN占了大部分市場。不過隨著這些年Git的優勢和越來越多的人對Git的熟悉,Git已經占據了主流市場,并且Git的生態也越來越好,這個趨勢可以從 GitHub 和國內的代碼托管平臺碼云的合作看出。另外從身邊的朋友中也了解到一些情況,比如:在一線城市使用Git的較多,而在二、三線城市使用SVN的公司則較多,我猜測是這可能主要是由于版本控制系統的操作復雜度所導致。

1.4.3 學習難度

可能看起來本地版本控制器比中央版本控制系統簡單,潛意識會覺得操作也比較方便;但實際上恰恰相反,中央版本控制系統在操作上會相對簡單,復雜的只是搭建過程;而本地版本控制系統則是安裝簡單,操作相對復雜一些。

圖片描述

因為開發者在使用中央版本控制系統時候,只需要提交代碼和拉取代碼即可,所能操作的項并不多,理解起來也相對簡單;而本地版本控制系統則不同,除了提交代碼到版本控制系統中,還需要將修改的記錄同步給其他開發者,理解起來也相對復雜,所以結論是:常規操作時候中央版本控制系統操作較為簡單。

1.5 本章小結

通過前面的介紹,我想大家對版本控制器,應該有了一定的認識,下面簡單歸納概括一下:

  1. 版本控制系統分為分布式版本控制系統中央版本控制系統分布式版本控制系統每一個節點都是獨立的系統,中央版本控制系統是典型的C/S架構,后面的內容分別以GitSVN來表述兩個版本控制系統;

  2. 從存儲空間來說GitSVN更加占用空間,因為Git在每個端都保留了所有的版本歷史,而SVN只在服務器中保存了歷史版本記錄,在客戶端是沒有保存本地版本歷史的;

  3. Git在流行程度、功能豐富方面比 SVN 有優勢,在學習難度上, SVN 更占據優勢。

}
立即訂閱 ¥ 49.00

你正在閱讀課程試讀內容,訂閱后解鎖課程全部內容

千學不如一看,千看不如一練

手機
閱讀

掃一掃 手機閱讀

Git原理詳解與實操指南
立即訂閱 ¥ 49.00

舉報

0/150
提交
取消