[.net 物件導向程式設計進階] (25) 團隊開發利器(四)分散式版本控制系統Git——使用GitStack+TortoiseGit 圖形介面搭建Git環境

yubinfeng發表於2016-02-05

[.net 物件導向程式設計進階] (25) 團隊開發利器(四)分散式版本控制系統Git——使用GitStack+TortoiseGit 圖形介面搭建Git環境

本篇導讀:

前面介紹了兩款程式碼管理工具VSS和SVN,這兩種管理工具在很長一段時間曾為我們的程式碼管理提供了便利,本篇介紹一款思維方式完全不同(也可以說不合常理)的版本控制系統——Git。可以說Git目前非常火,這與設計者劍指偏鋒的設計思想有很大關係。Git採用發散的思維管理程式碼,最大的特點就是分散式,他可以讓來自不同地區的開發者共同完成一個作品,讓每個開發者都可以發揮個性,同時又可以由發起者(即專案管理者)統一發布新版本。各個地區的開發者,還可以離線開發,這樣版本管理系統之所以火,也和當今社會萬眾創新的氛圍分不開。通過Git你可以盡情的發揮想象力,開源的春天已經到來,讓我們啟航吧!

 1. Git簡介 

名稱:Git (Git的讀音為/gɪt/,開源、免費、分散式的版本控制系統) 

廠商:Linux 的締造者 Torvalds 發起,為了更適合開源專案而設計,最初為Linux 版本,現已可以在Linux,Unix,Max,Windows各種系統中使用 

功能:分散式版本控制、後設資料方式儲存而非檔案方式、GIT的內容儲存使用的是SHA-1雜湊演算法能確保程式碼內容的完整性等,太多了讓我們慢慢挖掘。 

優點:

(1)分散式:說起優點,大多都是相對其它管理工作比如SVN等,最大的優點就是分散式,最大化開發個性;

(2)輕負載:因為強化個體並且使用後設資料儲存而非檔案形式,公用伺服器壓力較小;

(3)高效能:能快速處理分支,合併簡單快捷;並且分個分支的衝突解決非常方便。

(4)完整性:在儲存到 Git 之前,所有資料都要進行內容的校驗和(checksum)計算,並將此結果作為資料的唯一標識和索引。如果檔案在傳輸時變得不完整,或者磁碟損壞導致檔案資料缺失,Git 都能立即察覺。

(5)離線式:離線工作是Git一個重要特點,這種模式在以前獨佔式的版本控制的年代,是無法想象的。

(6)還有很多……

缺點:說起缺點,就現有的幾種版本控制系統相比較,幾乎找不出明顯缺點,唯一明顯的就是程式碼保密性差,一旦開發者把整個庫克隆下來就可以完全公開所有程式碼和版本資訊,這也是作者在設計之初的目標,以開源共享的大同世界為目標。再要說缺點為就是主觀方面的,比較學習難度稍大點(這個不要怕,後面會慢慢介紹),整個使用過程比較不符合常規思維(這個也不要怕,總要推陳出新的嘛 )。 

升級:開源專案,管理規範,升級及時。 

推薦:★★★★★ (從小型到大型專案均適用,小到小小的程式碼片段,大到Android、facebook、PHP、spring、mybatis等等

2. Git基礎

Git雖然這麼多優勢,但大多教程中都使用命令方式操作,這讓初學者望而卻步,本篇儘量使用圖形化介面介紹。

Git是一個全新思維的版本控制系統,如果你之前使用VSS,CVS,SVN等工具,那麼你一定不要把相似的概念作對比,最好忘記以前的合併、分支之些具體實現模式。(這點慢慢展開)

Git的近乎所有操作都在本地進行,即離線式。不論你在何地,都可以投入開發之中,那麼如何控制版本,這點不要擔心,在你網路方便的時候上傳更改即可。

Git在上傳資料時進行一系統計算,最小化的資料傳輸,若檔案沒有變化,Git 不會再次儲存,而只對上次儲存的快照作一連結。

Git擁有較高的可靠性,只要你養成定期推送的習慣,你可以隨意在本地計算機上做實驗,不用擔心弄丟資料,資料如何恢復,後面會慢慢介紹。

Git的檔案有三種狀態:已提交(committed),已修改(modified)和已暫存(staged)。已提交表示該檔案已經被安全地儲存在本地資料庫 中了;已修改表示修改了某個檔案,但還沒有提交儲存;已暫存表示把已修改的檔案放在下次提交時要儲存的清單中。

Git直接記錄快照,而非差異比較。Git 和其他版本控制系統的主要差別在於,Git 只關心檔案資料的整體是否發生變化,而大多數其他系統則只關心檔案內容的具體差異。

如果沒有理解,沒關係,慢慢來。

3. Git 基本工作流程 

(1). 在工作目錄中修改某些檔案。

(2). 對修改後的檔案進行快照,然後儲存到暫存區域。

(3). 提交更新,將儲存在暫存區域的檔案快照永久轉儲到 Git 目錄中。 

因此,我們可以從檔案所處的位置來判斷狀態:如果是 Git 目錄中儲存著的特定版本檔案,就屬於已提交狀態;

如果作了修改並已放入暫存區域,就屬於已暫存狀態;

如果自上次取出後,作了修改但還沒有放到暫存區域,就 是已修改狀態。

後面我們會進一步瞭解其中細節,並學會如何根據檔案狀態實施後續操作,以及怎樣跳過暫存直接提交。

4.Git的安裝前準備

4.1 安裝包簡介

終於進入到激動人心的時刻了,通過上面的介紹,看著很神祕的東東,馬上就要進入我們的視野中了。

在本系列文章中,我只介紹如何在Windows系統下安裝Git(雖說Windows下使用多Linux/Unix工具需要模擬環境,帶來很多不便,但是國內大多同學還是使用Windows),其他作業系統的同學請參照其他文章。

伺服器端工具:

Git 官方的服務端 需要使用命令列建立版本庫等操作。

gitstack 第三方開源伺服器端,專為Windows訂製,整合了較成熟悉版本的Git,並且Web方式的操作介面,無需指令。

客戶端工具如下:

TortoiseGit (TortoiseSVN的兄弟)圖形化介面做的最好的Git客戶端 

Git Extensions (Visual Studio 2013/2015整合的Git客戶端)讓您不使用命令列控制的 Git 的圖形化客戶端

git-cola 是一個Python開發的時尚和強大的git圖形使用者介面

EGit - (Java開發者Git客戶端外掛)利用EGit可以在 Eclipse中實現分行,合併,複製和同步庫

還有很多,我們會重點介紹TortoiseGit 和 Git Extensions

4.2  安裝包下載

我們下載Windows環境下我們所需的安裝包

(1)伺服器端

對於伺服器端環境配置這方面,網上現有的資料並不是很多,特別是在Windows環境下的伺服器搭建

喜歡使用Git原生版本的同學,請參照下面幾篇文章:

Windows+Git+COPSSH 方式,URL:http://blog.csdn.net/aaron_luchen/article/details/10498181   http://blog.csdn.net/code_style/article/details/38764203

對於Git命令列方式操作比較全的資料,URL:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

順便賦上Git官方的下載地址

Git伺服器端Windows版本安裝包 (包含32位和64位,根據你的伺服器作業系統選擇)

Git-2.7.0.2-64-bit.exe 

官網URL:http://git-scm.com/download/win 

(注意:我們下面將要使用的伺服器端環境並不需要下載原版)

不過COPSSH也不是免費的,並且上面的環境下還需要使用一些命令來完成部分操作(我並不是歧視使用命令列的方式操作,首先這是一個入門文章,力求簡單,再者伺服器端的搭建使用Linux更合適)

下面,我在本篇文章中為了讓大家儘快用上Git,我們也劍走偏鋒使用第三方純介面的伺服器端gitstack ,他整合了Git,因此我們的安裝下載,並不需要專門下載Git伺服器端了

因為整合了apache和Git,這個安裝包有點大126M,耐心下載吧

準備下載的第一個安裝包:

gitstack 開源整合Git的介面伺服器端

官網URL:http://gitstack.com/download/

下載過程如下圖:

(2)客戶端

TortoiseGit安裝包 和 中文語言包(包含32位和64位,根據你的客戶端作業系統選擇,我以64位為例介紹)

官方URL:http://tortoisegit.org/download/ 

TortoiseGit-1.8.16.0-64bit.msi

TortoiseGit-LanguagePack-1.8.16.0-64bit-zh_CN.msi

下載過程如下圖:

 

下載完成的三個安裝包如下:

 

5. 伺服器端安裝

 準備工作就緒,我們開始安裝伺服器端,雙擊 GitStack_2.3.8.exe

注意:此時,如果有這個提示,我們就需要暫時關閉佔用80埠的服務了,怎麼關閉呢,先找到什麼服務佔用了80

 

 執行,CMD,輸入netstat -aon|findstr "80" 查詢到 佔用80的程式的PID

然後在任務管理中,找到 停止即可

然後一路安裝完成,會自動開啟管理介面

預設使用者和密碼admin登入

這個介面是多麼熟悉啊,和SVN相似,建立 版本庫 、建立組、建立使用者、設定

到此我們伺服器的安裝就完成了,使用GitStack建立基於Windows伺服器端就是這麼簡單。下面我們介紹它的使用。

5. Git伺服器端GitStack的使用

GitStack的使用非常簡單,和SVN服務端沒多大區別,先看一下設定

  

完成設定後,我們建立一個版本庫和一個組及2個使用者

 將2使用者加入該組

接下來,我們給版本庫授權組MyGitGroup,於是,這兩個使用者就擁有該版本庫的操作權

先建立一個版本庫 MyGitObject,並配授權組或使用者(這裡我們授權組,就擁有該組下的兩個使用者了)

將剛才建的 組  MyGitGroup加入該版本庫

設定組的讀寫許可權

到此服務端的配置完成,我們可以看到 ,在設定的版本庫目錄中,多了一個我們剛建立的版本庫資料夾 MyGitObject.git

 

喜歡使用命令列的同學,仍然可以在這裡開啟操作 ,可以看到 GitStack的唯一作用,就是幫我們提供了一個http服務+一個介面化配置而且,我們的核心還是Git

 6.Git客戶端的安裝

客戶端工具眾多,我們選擇前面已經下載好的“小烏龜”

找到前面下載好的TortoiseGit安裝包和語言包

 

安裝客戶端開始

全程下一步,完工,然後安裝語言包(喜歡英文版的可以完工了)

語言包,下一步,完成!

語言包安裝完成後,我們在開始選單中找到 TortoiseGit的設定

選擇語言為:簡體中文 

客戶完工!@!

7.Git客戶端TortoiseGit的使用

繼續介紹TortoiseGit的使用

 7.1 獲取伺服器版本庫

先在本地計算機建立一個Git的工作目錄 F:\GitWorkArea 

開啟目錄在空白處右擊,可以看到 TortoiseGit的選單,初始操作可以選擇Git克隆,即獲取服務端版本庫,也可以選擇建立一個新的版本庫

因為之前我們在服務端已經建立過了一個版本庫,我們選擇 克隆。

在這裡URL我們輸入 ,之前伺服器端建立的版本庫地址,點確定後,這時需要我們認證一下使用者和密碼,這是必須的嘛 ,不然誰都可以克隆我們的版本了

使用者和密碼驗證完成後,版本庫克隆成功。

7.2 建立新檔案

接下來,必須是迫不及待的建立一個檔案,開始我們的Git之旅了

隨便寫點什麼,然後儲存,關閉。

7.3 提交

提交我們新建的檔案到版本庫,非常簡單,在工作目空白處右擊

 

然後點選,提交 到 master

這時,會有一個提示,需要設定一個互動的mail

在彈出的設定上,完成後確定

然後填寫備註,記得養成良好的使用習慣,提交要寫備註哦,然後選中檔案,確定

提交完成~

7.4 檢視變更日誌

檢視日誌前,我們在工作內再次建立一個檔案,提交;然後再次開啟該檔案,修改一下內容提交。

在工作目錄右擊 選擇 TortoiseGit ,開啟“顯示日誌”

在日誌視窗,我們可以看到三次變更的備註等資訊,非常全面

先到這裡吧,不知不覺凌晨4點了,關於TortoiseGit的使用會讓你不斷驚喜的,下篇會繼續介紹分支的建立,分支間的靈活切換,合併等等非常實用的功能。

8.本節要點:

本節內容比較多,首先讓我們對Git這一版本控制系統有了一個初步的認識,為了避免許多文章中一入手就是各種命令列,讓初學者望而卻步。我選擇了從一個最簡單的伺服器環境配置入手,即GitStack來建立Windows下的Git伺服器端,隨後介紹了我們熟悉的"小烏龜"版本的客戶端工具,即TortoiseGit的安裝及基本使用。下節更多實用的功能等著我們。

如果喜歡我的博文 ,記得點贊哦,也可以加QQ群交流,群號:467189533

==============================================================================================

返回目錄

<如果對你有幫助,記得點一下推薦哦,如有有不明白或錯誤之處,請多交流>

<對本系列文章閱讀有困難的朋友,請先看《.net 物件導向程式設計基礎》>

<轉載宣告:技術需要共享精神,歡迎轉載本部落格中的文章,但請註明版權及URL>

.NET 技術交流群:467189533 .NET 程式設計

==============================================================================================

相關文章