g4e基礎篇#4 瞭解Git儲存庫(Repo)

北京的201個藍天發表於2018-01-30

章節目錄

前言

1. 基礎篇:

Git 儲存庫看上去就是一個資料夾,只是在這個資料夾中不僅僅儲存了所有檔案的當前版本,也同時儲存了所有的歷史記錄,這些額外的資訊都儲存在當前資料夾下面的.git子目錄中。因為前面我們所描述的git跟蹤改動的特殊方式 ,git可以在很小的開銷下保留非常複雜的歷史記錄,同時也由於這種跟蹤方式,使得git可以通過改變連結指向的方式隨時切換當前目錄中任何檔案的版本,從而實現了在同一套檔案系統上切換分支的功能。

雖然git是分散式版本控制系統(DVCS),但是在企業開發中,我們仍然需要一箇中心git儲存庫以便不同的團隊成員可以更為方便的交換程式碼。與集中式(CVCS)的中心儲存庫不同,Git的中心儲存庫與任何開發人員的本地儲存庫都保留了一致的程式碼變更,因此開發人員不必連線到中心儲存庫就可以完成獲取歷史記錄,拉取分支,合併分支等操作;這給予了每一名開發人員離線工作的能力,同時允許每個人在本地建立自己的分支結構進行嘗試,在開發人員認為本地的分支需要共享給其他人的時候,他們可以將本地分支推送至中心儲存庫,這樣其他開發人員也可以獲取這些共享的更改。所以,在企業中使用Git並配合中心儲存庫可以兼顧團隊開發中共享和獨立開發的訴求,讓開發人員具備很高的自由度的同時又不會喪失程式碼集中儲存所帶來的優勢。

git-repo-1

當然,開發人員也可以不通過中心儲存庫共享程式碼,但是這種做法在企業中是不推薦的,雖然在GitHub上這基本上是普遍的工作方式,但是這種工作方式並不適合與企業開發。與開源軟體不同的是,大多數企業開發都是多人協作完成同一個專案,而開原始碼的開發則更需要每個人具備獨立的版本根據自己的需要進行定製。

Git儲存庫的基本結構

git-repo-2

注:在任何的作業系統中,使用.開頭的目錄都會被預設隱藏掉,所以要看這些檔案需要開啟隱藏檔案顯示和副檔名顯示才能看到上面的檢視。

.git目錄

git的資料目錄,裡面儲存了git自己管理的資料檔案,用於實現git的各種功能;刪除這個檔案等同於刪除所有git歷史記錄,而你的目錄就變成了一個普通的檔案目錄。

.gitattributes檔案

用來對當前目錄中的git的一些行為進行配置的檔案,它能夠做到很多事情,比如:指定哪些檔案是二進位制的以便git不會對它們進行文字比較,指定使用metadata的方式對圖片檔案進行比較,指定分支間特定檔案的合併策略(比如保持master為固定版本,忽略任何合併進來的版本),或者在暫存檔案的時候呼叫某些指令碼執行一些動作,等等。

詳細說明:https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes

.gitignore 檔案

這是一個非常重要的配置檔案,用來指定哪些檔案應該被忽略掉。因為我們在開發中經常會建立很多臨時檔案,比如:編譯過程的中間檔案和最終產生的二進位制,這些都不應該被提交到git倉庫中。因此我們需要根據不同的技術棧來配置這個檔案以便可以正確的忽略那些不應該提交的檔案型別。

好在github上已經收集了基本所有你會用到的gitignore檔案,只要根據你所使用的技術棧選擇並放入儲存庫即可:https://github.com/github/gitignore

Git的三級配置系統

以上我們在某個git倉庫中看到的.gitignore和.gitattributes都屬於Git的三級配置系統的一部分,用於對當前倉庫進行配置,另外兩個級別分別是 global 和 system。 他們的結構如下

  • system
    • global
      • repo 1
      • repo 2

系統級

system 為系統級配置檔案,在Windows上存放於Git的安裝目錄下(預設位置為C:\Program Files\Git\mingw64\etc\gitconfig)。如果要直接對這個配置進行編輯可以使用以下命令

git config --edit --system

git-repo-3

注:編輯系統級配置的命令列視窗需要提升許可權執行,否則無法儲存。

使用者級別

global 為當前使用者的全域性配置檔案,在Windows上存放於當前使用者的根目錄(預設為 C:\Users\{你的使用者名稱\.gitconfig)。如果要直接對這個配置進行編輯可以使用以下命令

git config --edit --global

git-repo-4

注:你會注意到我們在Git安裝配置那一章中所做的配置實際上就是在修改這個檔案。

儲存庫級別

Repo 級別就是當前儲存庫的配置檔案,存放在當前儲存庫的根目錄,編輯時需要先進入當前儲存庫的目錄,再執行以下命令

git config --edit

git-repo-5

以上我們提到的.gitattribute .gitconfig .gitignore都可以通過這三個級別分別配置,越接近git repo的配置生效級別越高。

有關gitconfig的更多配置內容請參考:FAQ #2

獲取Git配置的庫的兩種方式

新建儲存庫

只需要新建一個目錄,然後在裡面執行 git init 命令即可完成 git 庫的建立。具體命令操作如下

>> mkdir my-new-repo
>>> git init

git-repo-6

克隆儲存庫

首先從遠端儲存庫獲取clone地址,然後使用git clone命令即可完成克隆操作。如果遠端儲存庫是開放的,那麼克隆會立即開始;如果遠端儲存庫是私有的,則要看你之前是否已經將賬號資訊通過Git Credential Manager儲存,如果沒有則會彈出登陸對話方塊。類似以下流程:

1. 獲取Git儲存庫地址

如果你已經按照之前的安裝配置要求建立了VSTS賬號,你則可以通過 程式碼 | 克隆 找到儲存庫的url地址

git-repo-vsts-1

複製這個地址,我們就可以進行後續的 clone 操作了。

2. 執行 git clone 命令,輸入賬號並完成克隆操作

>>> git clone {遠端儲存庫url}

第一次操作一個陌生的遠端儲存庫會需要你輸入使用者名稱和密碼

git-repo-vsts-2

輸入正確的使用者名稱和密碼後,克隆會開始,完成以後你就可以開始操作本地git儲存庫了。

git-repo-vsts-3

小結

至此,我們已經可以獲取一個Git儲存庫了,後面的篇章我們將開始對它進行最基本的程式碼修改,分支,合併,推送和歷史記錄檢視等基本操作。


相關文章:


請關注微信公眾號 【devopshub】,獲取更多關於DevOps研發運維一體化的資訊

qrcode_for_gh_b7c158df1fd1_430

相關文章