git命令應該是工做中幾乎每天都要接觸到的,對於git一些經常使用命令你們也都能熟練操做。但git的配置卻較少人關注。git config雖然用得少,但它很重要,使用它後會給咱們帶來極大的便利。下面就簡單介紹下這個命令及其基本使用方法~ git
先談談字面意思,config譯爲配置,那git config就是獲取和設置倉庫的配置vim
要了解這個命令,咱們能夠在控制檯中打出git config,就能夠看到一些相關的用法,以下圖:
圖1 git config的使用方法(下面會屢次說起)編輯器
據瞭解,git config命令就是對git進行一些配置。而配置通常都是寫在配置文件裏面,那麼git的配置文件在哪裏呢?工具
從上圖咱們能夠看到相關的三個關鍵詞,即local
、global
、system
,這就是git裏的3個配置文件 spa
.git/config --local
,此時讀寫的就是這個文件。這裏的配置僅僅針對當前項目有效。git config --global
選項去設置它。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 進行增刪改操做時,須要管理員權限
$ git config [–-local | global | system] --add section.name value
例:git config --add cat.name niuniu (默認狀況,即添加到local配置中,以下圖)
正如上面說的,key和value必須成對出現,缺一不可,缺項則報錯,以下。
$ 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
// 從新設值(前提:此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文件
獲取某個屬性值
$ 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