git config介紹及基本使用方法

引言

git命令應該是工做中幾乎每天都要接觸到的,對於git一些經常使用命令你們也都能熟練操做。但git的配置卻較少人關注。git config雖然用得少,但它很重要,使用它後會給咱們帶來極大的便利。下面就簡單介紹下這個命令及其基本使用方法~    git

先談談字面意思,config譯爲配置,那git config就是獲取和設置倉庫的配置vim

要了解這個命令,咱們能夠在控制檯中打出git config,就能夠看到一些相關的用法,以下圖:
圖1 git config的使用方法(下面會屢次說起)
untitled.png編輯器

config file location

據瞭解,git config命令就是對git進行一些配置。而配置通常都是寫在配置文件裏面,那麼git的配置文件在哪裏呢?工具

從上圖咱們能夠看到相關的三個關鍵詞,即localglobalsystem,這就是git裏的3個配置文件 spa

  • .git/config 文件,即「倉庫級配置」文件:這個配置中的設置只對當前所在倉庫有效。使用.git/config --local,此時讀寫的就是這個文件。這裏的配置僅僅針對當前項目有效。
  • ~/.gitconfig 文件,即「全局級配置」文件:用戶目錄下的配置文件只適用於該用戶。可使用 git config --global 選項去設置它。
  • /etc/gitconfig 文件,即「系統級配置」文件:系統中對全部用戶都廣泛適用的配置。可使用 git config --system 選項。

如何選擇要操做的配置文件

上文提到了三種配置文件,及其適用的狀況。那麼咱們應該操做哪一個配置文件呢?答案固然是根據不一樣狀況而定啦~操作系統

(1) git config [--local] 針對一個倉庫code

使用場景:只想在某個項目中生效,而不是在全部的git倉庫中都生效 regexp

例如:orm

$ git config core.ignorecase false

(2) git config --global 針對一個用戶 ci

使用場景:想讓當前用戶操做的全部倉庫都生效,例以下面要說的配置快捷鍵

(3) git config --system 針對一個系統,必需要管理員權限,即便用sudo
使用場景:讓這個系統下的全部用戶操做的倉庫都生效,例如配置文本編輯器的,就能夠針對系統去設置

查看配置項及其優先級

瞭解了以上三種配置類型後,那麼,怎麼查看具體的配置呢?咱們能夠用如下的命令來查看

$ git config [--local|--global|--system] --list
// 或者
$ git config [--local|--global|–system] -l
// 注意:使用list時有兩個橫線「--」 ,使用簡寫的 l 時僅有一個「-」

$ git config -l 爲查看當前生效的配置,即三個配置文件的集合

咱們能夠來嘗試一下

 
上圖是 local級 的配置。咱們還能夠用 cat命令 來查看該config文件

從這個圖咱們能夠清楚的看到,在git中,每一項的配置名稱又叫作「section」,「section」下面的每一行對應着一個key和一個value。

好比上圖中的 core 即爲一個 section,名爲 repositoryformatversion 的 key 對應的 value 爲0。每一個 section 能夠對應不少對key、value,而key、value一定成對出現,但並非一對一,也就是說一個key能夠設置多個value(git默認採用最後一個)。


這是 global級 的配置。與 local級 的比較下,咱們很快便意識到,cat.name 在 local級 值爲duanwu,而在 global級 的值卻爲miao。
那麼,問題來了,一個git項目中的配置究竟是由什麼決定的呢?這就涉及到配置項的優先級問題了。

對於git來講,配置文件的權重是「倉庫 > 全局 > 系統」,即 「local > global > system」。git 會使用這一系列的配置文件來存儲你定義的偏好,它首先會查找 /etc/gitconfig 文件(系統級),而後查找每一個用戶的 ~/.gitconfig文件(全局級)。最後查找由用戶定義的各個庫中Git目錄下的配置文件 .git/config(倉庫級)。每個級別的配置都會覆蓋上層的相同配置,因此 .git/config 裏的配置會覆蓋 /etc/gitconfig 中的同名變量。

其實很好理解,由於它是按 system、global、local 的順序查找的,後面的同名配置會覆蓋上一級的配置。

增刪改查        

瞭解完配置文件的基本狀況,下面就該談談怎麼用了。PS:如下詳細介紹了各經常使用命令並配圖,有興趣的能夠本身也操做一遍~

回到圖1,其中的Action,涉及到的都是git config的用法。

首先要知道的是,①增、刪、改,若不顯式說明是哪一個配置,則默認操做的是 local 配置。②對 system 進行增刪改操做時,須要管理員權限

1. 增:--add

$ git config [–-local | global | system] --add section.name value

例:git config --add cat.name niuniu (默認狀況,即添加到local配置中,以下圖)

  正如上面說的,key和value必須成對出現,缺一不可,缺項則報錯,以下。

2. 刪:--unset | --unset-all | --remove-section

$ git config [–-local | global | system] --unset section.name

例,git config --unset cat.age


            
如果一個key對應多個value,那麼應該把要刪除的value帶上,不然會報錯(以下)

假若想一次性把某個屬性的全部值都刪掉,則用--unset-all命令

$ git config [–-local | global | system] --unset-all section.name

例,git config --unset -all cat.name

以上兩個命令就是與add相對,刪除配置項的某個屬性值(或全部屬性值)。雖然屬性值刪除了,但該配置項還存在,若想將配置項刪除,則使用remove-section命令

$ git config [–-local | global | system] --remove-section section

3. 改:--rename-section | --replace-all

// 從新設值(前提:此key只對應一個value,不然報錯) 
$ git config [–-local | global | system] section.key newValue

// 重命名
$ git config [–-local | global | system] --rename-section oldName newName

// 替換全部的值
 $ git config [–-local | global | system] --replace-all section.key newValue

此時,將會把key對應的全部value值都替換成新的。須要注意的是,此時最終只保留一個value(以下例)

    
咱們也能夠直接編輯配置文件,用如下命令:

$ git config --local -e | git config --local --edit

缺local項時默認編輯local文件

4. 查:get | get-all | get-regexp

獲取某個屬性值

$ git config [--local | global | system] --get section.key [value]

若是此key對應多個value,且獲取時不帶具體的value,那麼獲取的是最後的value(以下例)
固然了,若是 global, system 下也有對應的cat.name,那該項是會被local下覆蓋的,也就是獲取不到的(記住查找的順序,永遠是先system 再 global 再 local, git默認採用最後一項)
 

獲取全部屬性值
沒有註明哪一個配置的話,則是獲取全部配置下的屬性值,包括global,system

$ git config [--local | global | system] --get-all section.key

獲取某個section下的全部key和value(包括global和system)

$ git config [--local | global | system] --get-regexp section

    

5. 查 Type:--bool | --int | --bool-or-int | --path

正如「引言」的圖中Type模塊下的命令,這些是用來判斷value值的類型的。

$ git config [--local | global | system] [--bool|--int|--bool-or-int|--path] section.key

例 git config --local --bool cat.name

若是cat.name的值既不是布爾值,也不能被轉換爲布爾值,那就會報錯

經常使用的配置

1.配置用戶信息

   當咱們安裝好git時,第一個要配置的就是你的我的信息——用戶名和電子郵件地址,這兩項配置很重要,每次commit時都會引用這兩條信息,以說明是誰提交了代碼。   

如上圖的Author,若是你沒配置我的信息,就會採用默認的狀況。

2.取別名 配置快捷鍵

   配置快捷鍵雖然不是必須的,但當學會偷懶後,會給工做帶來極大的便利~
平時操做git倉庫時,有個經常使用的命令git status,status這個單詞雖然短但實在容易打錯。咱們就能夠給它取個別名 (alias意爲別名):

$ git config --global alias.st status

這條命令表示 alias.st = status,之後就可使用 git st 代替煩人的 git status 啦~

同時,用這種方法也能建立新的命令,例如用 last 表示查看最後一次提交

$ git config --global alias.last 'log -1 HEAD'

經常使用的命令還有不少,均可以簡寫。不少人都用 co 表示checkout,ci 表示commit,br 表示 branch,固然你也能夠本身命名,用的順手就能夠啦~

3.文本編輯器

   git也能夠設置默認使用的文本編輯器。當須要你輸入一些額外消息的時候,會自動調用一個外部文本編輯器給你用。默認會使用操做系統指定的默認編輯器,通常可能會是 Vi 或者 Vim。若是你有其餘偏好,好比 Emacs 的話,能夠從新設置:

$ git config --global core.editor emacs

4.差別分析工具

還有一個比較經常使用的是,在解決合併衝突時使用哪一種差別分析工具。好比要改用 vimdiff 的話:

$ git config --global merge.tool vimdiff

結語

git config 還有不少其餘的功能,以上只是介紹了一些經常使用的。有興趣的能夠本身瞭解噢~

    有須要幫助的地方,可使用 git help config 命令查看幫助文檔。或者戳 https://git-scm.com/docs/git-config

相關文章
相關標籤/搜索