Git:分佈式版本控制

一、git簡介

Git是分佈式版本控制系統,那麼它就沒有中央服務器的,每個人的電腦就是一個完整的版本庫(本地倉庫),這樣,工作的時候就不需要聯網了,因爲版本都是在自己的電腦上。既然每個人的電腦都有一個完整的版本庫,那多個人如何協作呢?比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

下圖就是分佈式版本控制工具管理方式:
在這裏插入圖片描述

二、git工作流程

一般工作流程如下:
1.從遠程倉庫中克隆 Git 資源作爲本地倉庫。
2.從本地倉庫中checkout代碼然後進行代碼修改
3.在提交前先將代碼提交到暫存區
4.提交修改。提交到本地倉庫。本地倉庫中保存修改的各個歷史版本。
5.在修改完成後,需要和團隊成員共享代碼時,可以將代碼push到遠程倉庫

下圖展示了 Git 的工作流程:
在這裏插入圖片描述

三、使用git管理文件版本

3.1 創建版本庫

版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄裏面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。由於git是分佈式版本管理工具,所以git在不需要聯網的情況下也具有完整的版本管理能力。
創建一個版本庫非常簡單,可以使用git bash也可以使用tortoiseGit。首先,選擇一個合適的地方,創建一個空目錄(repository)。
在這裏插入圖片描述
版本庫:“.git”目錄就是版本庫,將來文件都需要保存到版本庫中。在這裏創建版本庫,工作目錄:包含“.git”目錄的目錄,也就是.git目錄的上一級目錄就是工作目錄。只有工作目錄中的文件才能保存到版本庫中。

3.2 添加文件

3.2.1 工作區和暫存區

Git和其他版本控制系統如SVN的一個不同之處就是有暫存區的概念。

什麼是工作區(Working Directory)?
工作區就是你在電腦裏能看到的目錄,比如我的reporstory文件夾就是一個工作區。

其實repository目錄是工作區,在這個目錄中的“.git”隱藏文件夾纔是版本庫。

Git的版本庫裏存了很多東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。
如下圖所示:
在這裏插入圖片描述
分支和HEAD的概念我們稍後再講。前面講了我們把文件往Git版本庫裏添加的時候,是分兩步執行的:

  • 第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;
  • 第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。

因爲我們創建Git版本庫時,Git自動爲我們創建了唯一一個master分支,所以,現在,git commit就是往master分支上提交更改。

你可以簡單理解爲,需要提交的文件修改通通放到暫存區,然後,一次性提交暫存區的所有修改。

四、github實現遠程倉庫

現在我們已經在本地創建了一個Git倉庫,又想讓其他人來協作開發,此時就可以把本地倉庫同步到遠程倉庫,同時還增加了本地倉庫的一個備份。

常用的遠程倉庫就是github:https://github.com/,接下來我們演示如何將本地代碼同步到github。

4.1 ssh協議

SSH 爲 Secure Shell(安全外殼協議)的縮寫,SSH 是目前較可靠,專爲遠程登錄會話和其他網絡服務提供安全性的協議。

基於密匙的安全驗證:
使用ssh協議通信時,推薦使用基於密鑰的驗證方式。你必須爲自己創建一對密匙,並把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之後,先在該服務器上你的主目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)並把它發送給客戶端軟件。客戶端軟件收到“質詢”之後就可以用你的私人密匙解密再把它發送給服務器。

4.2 ssh密鑰生成

在windows下我們可以使用 Git Bash.exe來生成密鑰,可以通過開始菜單或者右鍵菜單打開Git Bash
git bash 執行命令,生成公鑰和私鑰

命令: ssh-keygen -t rsa
執行命令完成後,在window本地用戶.ssh目錄C:\Users\用戶名.ssh下面生成如下名稱的公鑰和私鑰:
在這裏插入圖片描述
密鑰生成後需要在github上配置密鑰本地纔可以順利訪問。
在這裏插入圖片描述
在key部分將id_rsa.pub文件內容添加進去,然後點擊“Add SSH key”按鈕完成配置。

4.3 同步到遠程倉庫

同步到遠程倉庫可以使用git bash也可以使用tortoiseGit

在倉庫所在的目錄右鍵選擇“Git Bash Here”,啓動git bash程序。

然後在git bash中執行如下語句:

git remote add origin [email protected]:sublun/mytest.git
git push -u origin master

注意:其中sublun部分需要替換成個人的用戶名。

可以先執行如下命令,然後再執行上面的命令
$ git remote rm origin

在這裏插入圖片描述

五、搭建私有Git服務器

5.1 服務器搭建

遠程倉庫實際上和本地倉庫沒啥不同,GitHub就是一個免費託管開源代碼的遠程倉庫。但是對於某些視源代碼如生命的商業公司來說,不想公開源代碼,那就只能自己搭建一臺Git服務器作爲私有倉庫使用。

搭建Git服務器需要準備一臺運行Linux的機器,在此我們使用CentOS。以下爲安裝步驟:
1、安裝git服務環境準備
yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc
2、下載git-2.5.0.tar.gz
1)解壓縮
2)cd git-2.5.0
3)autoconf
4)./configure
5)make
6)make install
3、添加用戶
adduser -r -c 'git version control' -d /home/git -m git
此命令執行後會創建/home/git目錄作爲git用戶的主目錄。
5、設置密碼
passwd git
輸入兩次密碼
6、切換到git用戶
su git
7、創建git倉庫
git --bare init /home/git/first
注意:如果不使用“--bare”參數,初始化倉庫後,提交master分支時報錯。這是由於git默認拒絕了push操作,需要.git/config添加如下代碼:
[receive]
      denyCurrentBranch = ignore
推薦使用:git --bare init初始化倉庫。

5.2 連接服務器

私有git服務器搭建完成後就可以向連接github一樣連接使用了,但是我們的git服務器並沒有配置密鑰登錄,所以每次連接時需要輸入密碼。
使用命令連接:

$ git remote add origin ssh://git@192.168.25.156/home/git/first

這種形式和剛纔使用的形式好像不一樣,前面有ssh://前綴,好吧你也可以這樣寫:

$ git remote add origin git@192.168.25.156:first
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章