Git命令行的通用形式如下:
git <git-options> <command> <command-options> <operands>
git <git選項(xiàng)> <命令> <命令選項(xiàng)> <操作數(shù)(可以不止1個(gè))>
對于選項(xiàng)馏臭,可以是英文單詞全拼括儒,也可以是縮寫锐想,如果是全拼,那么就用兩個(gè)橫線(--)來引導(dǎo);如果是簡稱隘谣,則使用一個(gè)橫線(-)來引導(dǎo)。
本文從配置用戶名和email這個(gè)使用Git第一步需要做的配置開始掘鄙,解釋Git的config命令的使用,以及以點(diǎn)帶面展開相關(guān)的重要內(nèi)容收津,想到哪兒說到哪兒浊伙。
1. 讓Git知道你是誰
Git使用名字和email來識別一個(gè)人的身份,這樣在一個(gè)源控制系統(tǒng)中Git就可以追蹤某個(gè)用戶干了些什么吻贿。
git config --global user.name "南山九叔"
git config --global user.email "xqlu@tsinghua.info"
其中command(命令)就是config哑子,--global就是命令行選項(xiàng)(command-options)肌割,因?yàn)間lobal是單詞全拼帐要,所以這里是雙橫線--引導(dǎo)選項(xiàng)。
user.name "南山九叔"
user.name "xqlu@tsinghua.info"
是兩個(gè)操作數(shù)
上面這條語句榨惠,翻譯成正常人的話,就是:配置global文件中的user.name參數(shù)為南山九叔耽装、user.name參數(shù)為xqlu@tsinghua.info简烤。
如果設(shè)置完以后,忘了自己設(shè)置的名字和email横侦,如何是好?
可以重新配置引瀑,也就是說user.name和user.email是隨時(shí)可以改的榨馁。
2. config配置的不同作用域
Git可以同時(shí)跟蹤許多個(gè)倉庫,因此為每一個(gè)倉庫配置一次很繁瑣翼虫,甚至?xí)簦訥it提供了三個(gè)級別的作用域:系統(tǒng)(system)掸宛、全局(global)和本地(local)招拙,以指定配置參數(shù)的作用范圍。
(1)系統(tǒng)(system)級別
配置信息在系統(tǒng)(電腦)上所有倉庫有效饰序,除非在一個(gè)更具體的(更低級別)級別上對其重寫规哪,否則他對系統(tǒng)上所有的倉庫有效。比如我使用的是一臺windows 10系統(tǒng)的電腦,電腦上有“南山九叔”猾蒂、“xqlu”是晨、“Admin”三個(gè)用戶,配置成system級別的參數(shù)對電腦上所有的用戶的倉庫都有效罩缴。
要在系統(tǒng)級別進(jìn)行配置,應(yīng)該指定system范圍烙荷,即config命令后跟--system選項(xiàng)檬寂。例如:
git config --system user.name "南山九叔"
git config --system user.?email?"xqlu@tsinghua.info
(2)全局(global)級別
配置信息對電腦上當(dāng)前登錄用戶的所有倉庫有效,除非在一個(gè)更具體的(更低級別)級別上對其重寫昼伴。比如我使用的是一臺windows 10系統(tǒng)的電腦镣屹,電腦上有“南山九叔”、“xqlu”女蜈、“Admin”三個(gè)用戶。當(dāng)前登錄的是xqlu逸寓,那么配置成global級別的參數(shù)對xqlu的所有倉庫都有效覆山,而對南山九叔和Admin這兩個(gè)用戶無效。
要在全局級別進(jìn)行配置汹买,文件應(yīng)該選擇--global聊倔,即給config命令指定--global選項(xiàng)。例如:
git config --global user.name "南山九叔"
git config --global user.?email?"xqlu@tsinghua.info
(3)本地(local)級別
配置信息默認(rèn)將在Git倉庫下的.git/config文件中(或者也有可能被存儲(chǔ)在Git目錄被分配到的任何位置之下的config子目錄中)见妒,local是一個(gè)具體的(有效范圍小甸陌,但是級別更高)配置盐股,它能夠覆蓋掉system和global的配置耻卡,這就是配置重寫。
比如我使用的是一臺windows 10系統(tǒng)的電腦幌蚊,電腦上有“南山九叔”溃卡、“xqlu”、“Admin”三個(gè)用戶瘸羡。當(dāng)前登錄的是xqlu,我有a队他、b冷尉、c三個(gè)倉庫,那么在c倉庫上配置成local級別的參數(shù)僅對c倉庫都有效雀哨,而對a和b倉庫無效。
要在local級別進(jìn)行配置膊夹,文件應(yīng)該選擇--local捌浩,即給config命令指定--local選項(xiàng)。例如:
git config --local core.autocrlf true
local是默認(rèn)級別进统,如果不顯性指定浪听,默認(rèn)的配置都是local級別。如下面的配置與上一句等價(jià):
git config core.autocrlf true
Git是如何實(shí)現(xiàn)不同級別配置的有效范圍的迹栓?
Git會(huì)以特定的搜索順序?qū)ふ遗渲茫谝淮握业脚渲弥缶褪褂眠@個(gè)配置酥郭。首先是local,然后是global不从,最后是system,這就保障了優(yōu)先級級別local>global>system载弄。如Figure 1所示撵颊。
Git中所有級別的配置總和就形成了處理一個(gè)倉庫時(shí)所使用的配置值的超集。
3. 查看config的配置值
如何查看配置值呢逞刷?只要在git bash中使用該配置命令(后面不要跟任何配置值)妻熊,就會(huì)顯示出該項(xiàng)的配置值。
git config <setting>
例如我要看當(dāng)前倉庫的user.name是誰帆喇,只需要如下命令:
git config user.name
git bash會(huì)輸出user.name的配置值亿胸,假如沒有配置,我們可以用如下命令在global域進(jìn)行配置(配置到其他域也可以):
git config --global user.name "南山九叔"
細(xì)心的用戶會(huì)發(fā)現(xiàn)侈玄,這里我并沒有指定是system還是global還是local范圍,所以Git會(huì)自動(dòng)去按照上一節(jié)說的搜索順序搜索突颊。
4. 移除config的配置值
如果我們想移除某一個(gè)級別上的一個(gè)用戶設(shè)置潘悼,Git提供了unset選項(xiàng),后面跟操作數(shù)棒动,指定移除那個(gè)級別的什么配置肝劲。
git config --unset <其它選項(xiàng)> <要移除的值>
舉個(gè)例子會(huì)說的更清楚:
git config --unset --local user.name
移除操作不會(huì)返回任何消息,這是linux一貫的響應(yīng)風(fēng)格辞槐。到底有沒有移除?我們可以使用上一節(jié)說的查看config配置值的方法查看卜范。
5. 列出config的配置清單
上面給出了查看某個(gè)配置項(xiàng)的值的方法鹿榜,這樣可以精確的去看當(dāng)前倉庫有效的配置值(因?yàn)樗凑者m配優(yōu)先級給出的配置值,所以是有效的)奥裸。但是如果我想看所有的配置項(xiàng)呢沪袭?可以使用list選項(xiàng)來實(shí)現(xiàn)這個(gè)夢想。具體如下:
git config --list
上面的命令將列出所有的設(shè)置值侠鳄,而且是沒有去適配的死宣,也是就是說system、global和local都會(huì)列在清單里毅该,這樣你得到的清單中同一個(gè)項(xiàng)目可能有多個(gè)值,這就是因?yàn)樗麄儊碜圆煌淖饔糜蛱ǘⅰ榱吮苊膺@種多個(gè)值出現(xiàn)的情況畏线,可以限定作用域,列出某一個(gè)作用范圍內(nèi)的配置清單寝殴,例如我們要看local作用范圍的清單,可以使用如下命令:
git config --list --local
這里特別要指出市咽,選項(xiàng)是沒有順序區(qū)分的抵蚊,上一句與下面這句的作用一樣溯革。
git config --local?--list
6. 配置文件到底在哪里致稀?
配置項(xiàng)都是來自于config文件的俱尼,config是一個(gè)純文本文件,可以使用任何文本文件查看器或編輯器查看遇八。那我的配置文件到底在哪里?可以使用--show-origin選項(xiàng)來溯源货矮。例如我想知道我的user.name 配置在什么地方斯够,可以是使用如下命令:
git config --show-origin user.name
如Figure 4所示,顯示當(dāng)前生效的user.name的配置在file:F:/Users/xqlu/AppData/Roaming/SPB_Data/.gitconfig中雳刺,配置值為xqlu掖桦。
7. 一次性配置
確實(shí)存在一次性配置這種配置方法,臨時(shí)配置僅僅在本次會(huì)話中有效枪汪。但是……我真心不推薦,這是一種非標(biāo)準(zhǔn)化的開發(fā)方式宿稀,這里我就不說了赖捌,確實(shí)好奇有這個(gè)想法的朋友可以自己去查資料。