W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
你在?起步?中看到,可以用?git config
?配置 Git。 首先要做的事情就是設置你的名字和郵件地址:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
現(xiàn)在,你會了解到許多更有趣的選項,并用類似的方式來定制 Git。
首先,快速回憶下:Git 使用一系列配置文件來保存你自定義的行為。 它首先會查找/etc/gitconfig
?文件,該文件含有系統(tǒng)里每位用戶及他們所擁有的倉庫的配置值。 如果你傳遞--system
?選項給?git config
,它就會讀寫該文件。
接下來 Git 會查找每個用戶的?~/.gitconfig
?文件(或者?~/.config/git/config
?文件)。 你可以傳遞?--global
?選項讓 Git 讀寫該文件。
最后 Git 會查找你正在操作的版本庫所對應的 Git 目錄下的配置文件(.git/config
)。 這個文件中的值只對該版本庫有效。
以上三個層次中每層的配置(系統(tǒng)、全局、本地)都會覆蓋掉上一層次的配置,所以?.git/config
中的值會覆蓋掉?/etc/gitconfig
?中所對應的值。
NOTE
Git 的配置文件是純文本的,所以你可以直接手動編輯這些配置文件,輸入合乎語法的值。 但是運行?
git config
?命令會更簡單些。
Git 能夠識別的配置項分為兩大類:客戶端和服務器端。 其中大部分屬于客戶端配置 —— 可以依你個人的工作偏好進行配置。 盡管 Git 支持的選項?繁多,但其中大部分僅僅在某些罕見的情況下有意義。 我們只講述最平常和最有用的選項。 如果想得到你當前版本的 Git 支持的選項列表,請運行
$ man git-config
這個命令列出了所有可用的選項,以及與之相關(guān)的介紹。 你也可以在??找到同樣的內(nèi)容。
core.editor
默認情況下,Git 會調(diào)用環(huán)境變量($VISUAL
?或?$EDITOR
)設置的任意文本編輯器,如果沒有設置,會調(diào)用?vi
?來創(chuàng)建和編輯你的提交以及標簽信息。 你可以使用?core.editor
?選項來修改默認的編輯器:
$ git config --global core.editor emacs
現(xiàn)在,無論你定義了什么終端編輯器,Git 都會調(diào)用 Emacs 編輯信息。
commit.template
如果把此項指定為你的系統(tǒng)上某個文件的路徑,當你提交的時候, Git 會使用該文件的內(nèi)容作為提交的默認信息。 例如:假設你創(chuàng)建了一個叫?~/.gitmessage.txt
?的模板文件,類似這樣:
subject line
what happened
[ticket: X]
要想讓 Git 把它作為運行?git commit
?時顯示在你的編輯器中的默認信息, 如下設置commit.template
:
$ git config --global commit.template ~/.gitmessage.txt
$ git commit
然后當你提交時,編輯器中就會顯示如下的提交信息占位符:
subject line
what happened
[ticket: X]
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: lib/test.rb
#
~
~
".git/COMMIT_EDITMSG" 14L, 297C
如果你的團隊對提交信息有格式要求,可以在系統(tǒng)上創(chuàng)建一個文件,并配置 Git 把它作為默認的模板,這樣可以更加容易地使提交信息遵循格式。
core.pager
該配置項指定 Git 運行諸如?log
?和?diff
?等命令所使用的分頁器。 你可以把它設置成用?more
或者任何你喜歡的分頁器(默認用的是?less
),當然也可以設置成空字符串,關(guān)閉該選項:
$ git config --global core.pager ''
這樣不管命令的輸出量多少,Git 都會在一頁顯示所有內(nèi)容。
user.signingkey
如果你要創(chuàng)建經(jīng)簽署的含附注的標簽(正如?簽署工作?所述),那么把你的 GPG 簽署密鑰設置為配置項會更好。 如下設置你的密鑰 ID:
$ git config --global user.signingkey <gpg-key-id>
現(xiàn)在,你每次運行?git tag
?命令時,即可直接簽署標簽,而無需定義密鑰:
$ git tag -s <tag-name>
core.excludesfile
正如?忽略文件?所述,你可以在你的項目的?.gitignore
?文件里面規(guī)定無需納入 Git 管理的文件的模板,這樣它們既不會出現(xiàn)在未跟蹤列表,也不會在你運行?git add
?后被暫存。
不過有些時候,你想要在你所有的版本庫中忽略掉某一類文件。 如果你的操作系統(tǒng)是 OS X,很可能就是指?.DS_Store
。 如果你把 Emacs 或 Vim 作為首選的編輯器,你肯定知道以?~
?結(jié)尾的臨時文件。
這個配置允許你設置類似于全局生效的?.gitignore
?文件。 如果你按照下面的內(nèi)容創(chuàng)建一個~/.gitignore_global
?文件:
*~
.DS_Store
……然后運行?git config --global core.excludesfile ~/.gitignore_global
,Git 將把那些文件永遠地拒之門外。
help.autocorrect
假如你打錯了一條命令,會顯示:
$ git chekcout master
git:'chekcout' 不是一個 git 命令。參見 'git --help'。
您指的是這個么?
checkout
Git 會嘗試猜測你的意圖,但是它不會越俎代庖。 如果你把?help.autocorrect
?設置成 1,那么只要有一個命令被模糊匹配到了,Git 會自動運行該命令。
$ git chekcout master
警告:您運行一個不存在的 Git 命令 'chekcout'。繼續(xù)執(zhí)行假定您要要運行的
是 'checkout'
在 0.1 秒鐘后自動運行...
注意提示信息中的“0.1 秒”。help.autocorrect
?接受一個代表十分之一秒的整數(shù)。 所以如果你把它設置為 50, Git 將在自動執(zhí)行命令前給你 5 秒的時間改變主意。
Git 充分支持對終端內(nèi)容著色,對你憑肉眼簡單、快速分析命令輸出有很大幫助。 你可以設置許多的相關(guān)選項來滿足自己的偏好。
color.ui
Git 會自動著色大部分輸出內(nèi)容,但如果你不喜歡花花綠綠,也可以關(guān)掉。 要想關(guān)掉 Git 的終端顏色輸出,試一下這個:
$ git config --global color.ui false
這個設置的默認值是?auto
,它會著色直接輸出到終端的內(nèi)容;而當內(nèi)容被重定向到一個管道或文件時,則忽略著色功能。
你也可以設置成?always
,來忽略掉管道和終端的不同,即在任何情況下著色輸出。 你很少會這么設置,在大多數(shù)場合下,如果你想在被重定向的輸出中插入顏色碼,可以傳遞?--color
?標志給 Git 命令來強制它這么做。 默認設置就已經(jīng)能滿足大多數(shù)情況下的需求了。
color.*
要想具體到哪些命令輸出需要被著色以及怎樣著色,你需要用到和具體命令有關(guān)的顏色配置選項。 它們都能被置為?true
、false
?或?always
:
color.branch
color.diff
color.interactive
color.status
另外,以上每個配置項都有子選項,它們可以被用來覆蓋其父設置,以達到為輸出的各個部分著色的目的。 例如,為了讓?diff
?的輸出信息以藍色前景、黑色背景和粗體顯示,你可以運行
$ git config --global color.diff.meta "blue black bold"
你能設置的顏色有:normal
、black
、red
、green
、yellow
、blue
、magenta
、cyan
或?white
。 正如以上例子設置的粗體屬性,想要設置字體屬性的話,可以選擇包括:bold
、dim
、ul
(下劃線)、blink
、reverse
(交換前景色和背景色)。
雖然 Git 自己內(nèi)置了一個?diff
?實現(xiàn),而且到目前為止我們一直在使用它,但你能夠用一個外部的工具替代它。 除此以外,你還能設置一個圖形化的工具來合并和解決沖突,從而不必自己手動解決。 這里我們以一個不錯且免費的工具 —— Perforce 圖形化合并工具(P4Merge) —— 來展示如何用一個外部的工具來合并和解決沖突。
P4Merge 可以在所有主流平臺上運行,所以安裝上應該沒有什么困難。 在這個例子中,我們使用的路徑名可以直接應用在 Mac 和 Linux 上;在 Windows 上,/usr/local/bin
?需要被改為你的環(huán)境中可執(zhí)行文件所在的目錄路徑。
首先, 從??下載 P4Merge。 接下來,你要編寫一個全局包裝腳本來運行你的命令。 我們會使用 Mac 上的路徑來指定該腳本的位置,在其他系統(tǒng)上,它將是?p4merge
?二進制文件所在的目錄。 創(chuàng)建一個名為?extMerge
?的腳本包裝 merge 命令,讓它把參數(shù)轉(zhuǎn)發(fā)給 p4merge 二進制文件:
$ cat /usr/local/bin/extMerge
#!/bin/sh
/Applications/p4merge.app/Contents/MacOS/p4merge $*
包裝 diff 命令的腳本首先確保傳遞了七個參數(shù)過來,隨后把其中兩個轉(zhuǎn)發(fā)給包裝了 merge 的腳本。 默認情況下, Git 傳遞以下參數(shù)給?diff
:
path old-file old-hex old-mode new-file new-hex new-mode
由于你僅僅需要?old-file
?和?new-file
?參數(shù),由包裝 diff 的腳本來轉(zhuǎn)發(fā)它們吧。
$ cat /usr/local/bin/extDiff
#!/bin/sh
[ $# -eq 7 ] && /usr/local/bin/extMerge "$2" "$5"
你也需要確保這些腳本具有可執(zhí)行權(quán)限:
$ sudo chmod +x /usr/local/bin/extMerge
$ sudo chmod +x /usr/local/bin/extDiff
現(xiàn)在你可以修改配置文件來使用你自定義的合并和比較工具了。 這將涉及許多自定義設置:merge.tool
?通知 Git 該使用哪個合并工具,?mergetool.<tool>.cmd
?規(guī)定命令運行的方式,mergetool.<tool>.trustExitCode
?會通知 Git 程序的返回值是否表示合并操作成功,diff.external
?通知 Git 該用什么命令做比較。 因此,你可以運行以下四條配置命令:
$ git config --global merge.tool extMerge
$ git config --global mergetool.extMerge.cmd \
'extMerge \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"'
$ git config --global mergetool.extMerge.trustExitCode false
$ git config --global diff.external extDiff
或編輯你的?~/.gitconfig
?文件,添加以下各行:
[merge]
tool = extMerge
[mergetool "extMerge"]
cmd = extMerge "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
trustExitCode = false
[diff]
external = extDiff
待一切設置妥當后,如果你像這樣運行 diff 命令:
$ git diff 32d1776b1^ 32d1776b1
Git 將啟動 P4Merge,而不是在命令行輸出比較的結(jié)果,就像這樣:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: