工具——Git——環境搭建

  本篇演示Git的HelloWorld示例,主要內容有三個部分,Git安裝,Git的HelloWorld示例,Git的目錄結構。

1、安裝

  在Window安裝Git,需要安裝兩個軟件,

  第一個是Git軟件,它的下載地址是https://www.git-scm.com/download/,

  第二個是Git圖形界面,推薦使用TortoiseGit,GitExtension,在官網上有各種類型的UI工具,下載地址是https://www.git-scm.com/download/gui/windows

  安裝Git準備,Git 64位的安裝包已下載。電腦上不存在Git。

準備完之後,安裝Git的步驟如下:

第一步,運行exe安裝程序,點擊next,選擇安裝目錄

第二步,選擇組件(Component),全選上也沒有問題

     第三步,在開始菜單創建Git文件夾。

  第四步,選擇Git使用的編輯器。它的默認值是Vim,是Linux平臺上的編輯器,這裏我選擇use Sublime Text as Git’s default editor。下拉列表可以看到其他編輯器,例如notepad++等。

  

   第五步,選取Git命令的運行環境。

  

   第一個選項Use Git from Git base only,只在git bash下執行git命令。若想要在cmd中執行git命令,後續可以修改環境變量,把install_dir/bin添加到環境變量中。

第二個選項,Git會安裝一些Unix工具,並且會把Git命令存放的目錄添加到環境變量中。

第三個選項,使用Git

第六步,建立SSL連接時,採用何種策略,這裏選擇OpenSSL,它是非常著名的生成證書的工具。有興趣的可以研究下。

   第七步,選擇換行符,我這裏選擇的是checkout as is, commit as is。現在主流的版本庫是Github, 不是Linux服務器。若是在Window上有開發版本庫,在Linux上有發佈版本庫,選擇第一項。

  

    第八步,配置Git base仿真器,在windows上的話我選擇MinTTy,因爲cmd運行git命令這種方式,只需要配置環境變量即可,git bash和cmd的功能重複了。

   第九步,配置其他附加的,可選的功能

 

   開啓文件系統緩存可以大幅度提升性能,這個必選。

允許Git的證書存放在Window證書管理中心,這個建立SSL連接時必選,不然自己手動添加比較麻煩。

允許軟鏈接,在Linux系統中,有兩種鏈接,軟鏈接,硬鏈接。在window下不必開啓。

第十步,點擊install, 最後點擊finish完成即可。

2、HelloWorld示例

  下述將演示Git,創建Git倉庫,執行最基本的操作。步驟如下:

  第一步, 創建first_git_repo(名稱隨意)文件夾,進入文件夾,執行git init

  創建完成之後,會創建隱藏的.git文件夾。

第二步,創建Hello.txt文件,執行git add Hello.txt命令

Git版本庫存在三種區域,工作目錄,索引,底層的數據庫。當創建Hello.txt文件時,它存在於工作目錄下,執行add之後,它添加到索引中。

這個過程是稱爲”stage”,意思是指工作目錄提交到底層版本庫需要兩個步驟,添加到索引中,之後再提交到本地版本庫中。Stage的字典解釋是a period or state that sth/sb passes through while developing or making process。在Git中指提交過程中的一個階段。

第三步,執行git status

可以查看版本庫的狀態。

第四步,執行git commit -m “初始化提交”

提交變更,執行完之後可以查看.git/objects目錄下存在一些二進制文件。說明已提交成功

第五步,執行git log, 也可以執行git show-branch

查看版本庫的提交記錄,由於量小,可以直接使用此命令,當量比較多時,建議執行git log > log.txt,將結果保存到log.txt中查看。

第六步,在Hello.txt文件中添加Hello Git的內容,重複第二步,第四步

文本內容的變更。

第七步,執行git diff HEAD HEAD~1

比較兩次提交記錄,可以查看最近一次有哪些變更。結果如下

diff --git a/Hello.txt b/Hello.txt
index e51ca0d..e69de29 100644
--- a/Hello.txt
+++ b/Hello.txt
@@ -1 +0,0 @@
-Hello Git
\ No newline at end of file

  若未配置用戶名和郵箱,需先配置。配置命令爲git config user.name || user.email 

3、版本庫目錄結構

  創建完版本庫之後,會相對應的創建.git文件夾,該文件夾下存放着所有的核心對象以及很重要的內容。理解各個文件,以及文件夾的作用有助於理解Git是如何運作的,但是不要去手動操作這些文件。下面詳細介紹它們

3.1     文件

3.1.1   index

瞭解Index,首先需要理解索引的概念,以及版本庫三種存儲類型。

非裸版本庫有三種存儲類型,

第一種是工作目錄,它是指存放於操作系統的文件系統中,此時在索引,底層數據庫還未體現。

第二種是索引,此時Git會計算文件的內容,並計算SHA1值,創建blob對象,此時在索引中會保存文件的路徑,底層數據庫會保存文件的內容。

  第三種是底層數據庫,它可以根據tree,blob對象完整的還原某個特定版本庫的文件目錄結構和文件內容。意味着假設在很早之前創建test文件夾,hello.txt,之後刪除文件夾,刪除hello.txt,或把hello.txt改的面目全非,也可以通過tree, blob對象還原當時的版本庫。本質上它是Git對象與文件系統的一種映射。

  索引是工作目錄最終保存在底層數據庫的一個過渡階段。它記錄兩個內容,一方面記錄文件在文件系統中的目錄結構,另外一方面記錄文件內容對應的blob對象。可以理解Index就是一座橋樑。

  3.1.2  config

config文件保存版本庫的配置信息,最常見的user.name,email。

操作config文件的方式有兩種,

第一種方式是通過文本編輯器進行編輯,這種方式需要深刻理解每個配置項的含義,修改失敗往往會導致配置文件不可用。

第二種方式是通過命令的方式,最常見的命令是git config, 其他命令也會反映在配置項上,例如git remote, git clone等。

查看config文件的方式也有兩種,

第一種方式,通過編輯器直接打開查看,這種情況下需要綜合全局的配置(user/.gitconfig)和本地版本庫的配置(.git/config)

第二種方式,運行git config –-list命令。

在實際應用中,最常見的配置就是用戶的信息,遠程版本庫的一些信息。

3.1.3   description

版本庫的描述,沒什麼用。相當於Java在創建包時,創建的package-info.java,用於描述包的用途。Description文件是類似的,它用於描述版本庫的用途。

3.1.4   Head

保存Head當前指向的Commit對象。它包含兩個信息,第一個信息是分支名稱,第二個信息是Commit對象的信息。

通常情況下,Head總是指向分支的最近一次提交。但是使用reset命令可以改變。在第十章節中會重點介紹reset命令。

3.2   object目錄

它用於存放核心對象,blob,commit,tree,每種類型的對象都一一對應SHA1值,並以它的前兩位作爲目錄名稱,後126位作爲文件的名稱。

打開目錄,通過人是無法識別出對象的類型,而且也無法查看文件的內容,都是二進制文件。

切記勿修改,移動,刪除其中的內容。

3.3   logs目錄

存放Git的日誌,大部分是引用日誌,即HEAD相關的日誌。

可以通過git reflog, git log命令查看日誌的內容

3.4   hooks目錄

它存放鉤子,熟悉JS的程序員知道,每個組件都會有很多的事件監聽。鉤子的作用是監聽git的命令,類似於JS中的事件概念。

在實際中適用場景較少,文件夾下存放着一些鉤子的示例,供學習和參考。

3.5   refs目錄

ref目錄用於保存引用類型,它有兩個文件夾,heads目錄和tags目錄

heads目錄用於保存HEAD對應的,各個分支的Commit對象,默認是最近一次的Commit對象。

Tags目錄用於保存tag對應的Commit對象,初始情況下是空的,當創建tag對象之後,目錄下會顯示。

stash目錄用於保存stash命令產生的一些內容。

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