# git-config
> 原文: [https://git-scm.com/docs/git-config](https://git-scm.com/docs/git-config)
>
> 貢獻者:[honglyua](https://github.com/honglyua)
## 名稱
git-config - 獲取并設置存儲庫或全局選項
## 概要
```
git config [<file-option>] [--type=<type>] [--show-origin] [-z|--null] name [value [value_regex]]
git config [<file-option>] [--type=<type>] --add name value
git config [<file-option>] [--type=<type>] --replace-all name value [value_regex]
git config [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get name [value_regex]
git config [<file-option>] [--type=<type>] [--show-origin] [-z|--null] --get-all name [value_regex]
git config [<file-option>] [--type=<type>] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
git config [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch name URL
git config [<file-option>] --unset name [value_regex]
git config [<file-option>] --unset-all name [value_regex]
git config [<file-option>] --rename-section old_name new_name
git config [<file-option>] --remove-section name
git config [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list
git config [<file-option>] --get-color name [default]
git config [<file-option>] --get-colorbool name [stdout-is-tty]
git config [<file-option>] -e | --edit
```
## 描述
您可以使用此命令查詢/設置/替換/取消設置選項。該名稱實際上是由一個點分隔的配置項名和鍵名組成,即`name相當于<section>.<key>`,執行`git config <section>.<key>`后,該配置項設置的值將被輸出。
可以使用`--add`為某個配置項添加多個值。如果要更新或取消某個配置項,而這個配置項存在多個值時,你需要給出值后綴的正則表達式`value_regex`。它只更新或取消與正則表達式匹配的設置值。如果你想處理那些與正則表達式不匹配的設置行,只需在前面添加一個感嘆號(另見[示例](#EXAMPLES))。
`--type=<type>`選項是為了保證以給定的type去規范化輸入和輸出 _git config_ 中配置項的值。如果沒有給出`--type=<type>`,則不執行規范化。調用者可以使用`--no-type`取消設置里已有的`--type`說明符。
讀取時,默認情況下會從系統,全局和存儲庫本地配置文件中讀取值,并且可以使用選項`--system`,`--global`,`--local`,`--worktree`和`--file <filename>`來告訴命令讀取哪里的配置文件(參見 [FILES](#FILES) )。
寫入時,默認情況下會將新值寫入存儲庫本地配置文件,并且可以使用選項`--system`,`--global`,`--worktree`,`--file <filename>`來告訴命令寫入該位置(可以使用`--local`但這是默認選項)。
出錯時,此命令將失敗,并以非零狀態碼退出。一些退出狀態碼有:
* 部分或鍵無效(ret = 1),
* 沒有提供配置選項或名稱(ret = 2),
* 配置文件無效(ret = 3),
* 配置文件無法寫入(ret = 4),
* 你試圖取消一個不存在的選項(ret = 5),
* 您在嘗試取消設置/設置配置選項時,該配置項擁有多行配置(ret = 5),或
* 您在嘗試使用無效的正則表達式(ret = 6)。
成功時,該命令返回退出狀態碼0。
## 選項
```
--replace-all
```
默認行為是最多替換一行。它將會替換與鍵匹配的所有行(以及有可選的value_regex)。
```
--add
```
在不更改任何現有值的情況下向選項添加新行。這與在`--replace-all`中以 _^ $_ 作為value_regex的值相同。
```
--get
```
獲取給定鍵的值(可選擇通過與值匹配的正則表達式進行過濾)。如果未找到對應鍵值,則返回錯誤狀態碼1;如果找到多個鍵值對,則返回最后一個值。
```
--get-all
```
與get類似,但返回所有鍵值對的值。
```
--get-regexp
```
與--get-all類似,輸出所有與正則表達式匹配的鍵值對,并輸出鍵名和對應值。正則表達式匹配目前區分大小寫,并且針對鍵的規范化版本完成,其中段和變量名稱是小寫的,但子段名稱不是。
```
--get-urlmatch name URL
```
如果給出了一個由兩部分組成的配置項名稱section.key,則返回與<url>最匹配的值(如果不存在此配置名,則section.key的值用作回退)。如果僅將輸入section,則返回所有與section匹配的鍵值對。如果未找到值,則返回錯誤代碼1。
```
--global
```
對于寫入選項:寫入全局配置文件`~/.gitconfig`,而不是存儲庫配置文件`.git/config`。如果全局配置文件不存在而`$XDG_CONFIG_HOME/git/config`文件存在,則寫入`$XDG_CONFIG_HOME/git/config`文件。
對于讀取選項:只讀取`~/.gitconfig`和`$XDG_CONFIG_HOME/git/config`文件中的配置,而不是所有可用文件中的。
另見 [FILES](#FILES) 。
```
--system
```
對于寫入選項:寫入系統路徑下的配置文件`$(prefix)/etc/gitconfig`,而不是存儲庫配置文件`.git/config`。
對于讀取選項:只讀取系統路徑下的配置文件`$(prefix)/etc/gitconfig`中的配置,而不是所有可用文件中的。
另見 [FILES](#FILES) 。
```
--local
```
對于寫入選項:寫入存儲庫配置文件`.git/config`中。這是默認行為。
對于讀取選項:只讀取存儲庫配置文件`.git/config`中的配置,而不是所有可用文件中的。
另見 [FILES](#FILES) 。
```
--worktree
```
與`--local`類似,但如果`extensions.worktreeConfig`存在,則讀取或寫入`.git/config.worktree`中。如果不存在,它與`--local`效果相同。
```
-f config-file
```
```
--file config-file
```
使用給定的配置文件,而不是GIT_CONFIG指定的配置文件。
```
--blob blob
```
與`--file`類似,但給定是blob路徑而不是文件路徑。例如。您可以使用 _master:.gitmodules_,從master分支中的文件`.gitmodules`中讀取配置值。有關拼寫blob名稱的更完整列表,請參閱 [gitrevisions [7]](https://git-scm.com/docs/gitrevisions) 中的“指定修訂”部分。
```
--remove-section
```
從配置文件中刪除給定的配置項。
```
--rename-section
```
將給定section重命名為新名稱。
```
--unset
```
從配置文件中刪除與鍵匹配的行。
```
--unset-all
```
從配置文件中刪除與鍵匹配的所有行。
```
-l
```
```
--list
```
列出配置文件中設置的所有配置項及其值。
```
--type <type>
```
_git config_ 在給定的類型約束下,將確保任何輸入或輸出有效,并將以`<type>`的規范形式規范化輸出值。
有效`<type>`包括:
* _bool_ :將值規范化為“true”或“false”。
* _int_ :將值規范化為簡單的十進制數。 _k_,_m_ 或 _g_ 的可選后綴將使該值在輸入時乘以1024,1048576或1073741824。
* _bool-or-int_ :根據 _bool_ 或 _int_ 進行標準化,如上所述。
* _path_ :通過以規范化的形式,在值前添加前綴`~`來指向用戶的根目錄`$HOME`和`~user`。設置值時,此說明符無效(但您可以使用命令行中的`git config section.variable ~/`讓shell執行擴展。)
* _expiry-date_:通過以規范化的形式,將固定或相對固定的日期字符串轉換為時間戳。設置值時,此說明符無效。
* _color_ :獲取值時,通過轉換為ANSI顏色轉義序列進行規范化。設置值時,將執行完整性檢查以確保給定值可以作為ANSI顏色進行規范化,但它按原樣編寫。
```
--bool
```
```
--int
```
```
--bool-or-int
```
```
--path
```
```
--expiry-date
```
選擇類型說明符的歷史選項。而不是`--type`(見上文)。
```
--no-type
```
取消設置先前設置的類型說明符(如果先前已設置)。此選項請求 _git config_ 不規范化檢索到的變量。沒有`--type=<type>`或`--<type>`,`--no-type`也不會受影響。
```
-z
```
```
--null
```
對于輸出值或鍵名時,始終使用空字符(而不是換行符)作為結束字符串。使用換行符作為鍵和值之間的分隔符。這允許準確地解析輸出而不會混淆,例如包含換行符的值。
```
--name-only
```
僅輸出`--list`或`--get-regexp`的配置變量名稱。
```
--show-origin
```
增加輸出內容:origin的類型(文件,標準輸入,blob,命令行)和origin的指向(配置文件路徑,ref或blob id,如果適用)
```
--get-colorbool name [stdout-is-tty]
```
找到`name`的顏色設置(例如`color.diff`)并輸出“true”或“false”。 `stdout-is-tty`可以為“true”或“false”,并在配置顯示為“auto”時予以考慮。如果缺少`stdout-is-tty`,則檢查命令本身的標準輸出,如果要使用顏色則退出狀態0,否則退出狀態1。當`name`的顏色未設置時,該命令使用`color.ui`作為后備。
```
--get-color name [default]
```
找到為`name`配置的顏色(例如`color.diff.new`)并將其作為ANSI顏色轉義序列輸出到標準輸出。如果沒有`name`未配置顏色,則會使用可選的`default`參數。
`--type=color [--default=<default>]`優于`--get-color`。
```
-e
```
```
--edit
```
打開編輯器,修改指定的配置文件; `--system`,`--global`或存儲庫(默認)。
```
--[no-]includes
```
在配置文件中查找值時,會考慮使用`include.*`指令。如果給出特定文件(例如,使用`--file`,`--global`等),則功能默認是`off`。如果在搜索所有配置文件時,功能是`on`
```
--default <value>
```
使用`--get`時,找不到請求的變量時,其行為就像<value>是賦給該變量的值。
## 配置
當使用`--list`或可能有多個返回結果的`--get-*`時,會遵守`pager.config`列出配置。默認是使用分頁的。
## 文件
如果未使用`--file`選項,則`git config`會從以下四個配置文件中,搜索配置選項:
```
$(prefix)/etc/gitconfig
```
系統范圍的配置文件。
```
$XDG_CONFIG_HOME/git/config
```
特定用戶的第二個配置文件。如果`$XDG_CONFIG_HOME`未設置或為空,將使用`$HOME/.config/git/config`。此文件中設置的任何單值變量都將被`~/.gitconfig`中的任何內容覆蓋。如果您有時使用舊版本的Git,最好不要創建此文件,因為最近添加了對此文件的支持。
```
~/.gitconfig
```
特定用戶的配置文件。也稱為“全局”配置文件。
```
$GIT_DIR/config
```
特定存儲庫的配置文件。
```
$GIT_DIR/config.worktree
```
這是可選的,僅在`$GIT_DIR/config`中存在`extensions.worktreeConfig`時才會被搜索到。
如果沒有給出進一步的選項,在讀取所有配置選項時,將從以上所有可用的文件中讀取。如果全局或系統范圍的配置文件不可用,則它們將會被忽略。如果存儲庫配置文件不可用或不可讀,`git config`將以非零錯誤狀態退出。但是,在任何情況下都不會發出錯誤消息。
按上面給出的順序讀取配置文件中的配置,新讀到的配置值將會覆蓋之前讀到的。當獲取多個值時,將使用來自所有文件的鍵的所有值。
使用`-c`選項運行任何git命令時,可以覆蓋單個配置參數。有關詳細信息,請參閱 [git[1]](https://git-scm.com/docs/git)。
所有配置選項寫入時,都將默認寫入到當前存儲庫的配置文件中。請注意,這也會影響`--replace-all`和`--unset`等選項。 **_git config_ 一次只能更改一個配置文件中配置**。
您可以通過命令行選項或環境變量覆蓋這些規則。 `--global`,`--system`和`--worktree`選項將分別限制用于全局,系統范圍和每個工作樹的配置文件。 `GIT_CONFIG`環境變量具有類似的效果,但您可以指定所需的任何文件名。
## 環境變量
```
GIT_CONFIG
```
從給定文件而不是.git/config中獲取配置。使用“--global”選項將強制使用~/.gitconfig。使用“--system”選項強制使用$(前綴)/etc/gitconfig。
```
GIT_CONFIG_NOSYSTEM
```
是否跳過從系統配置文件$(前綴)/etc/gitconfig中讀取設置。有關詳細信息,請參閱[git[1]](https://git-scm.com/docs/git)。
另見 [FILES](#FILES)。
## 例子
給出像這樣的.git / config:
```
#
# 給出像這樣的,
# '#' 或者 ';' 是表示注釋
#
```
```
; core variables
[core]
; Don't trust file modes
filemode = false
```
```
; Our diff algorithm
[diff]
external = /usr/local/bin/diff-wrapper
renames = true
```
```
; Proxy settings
[core]
gitproxy=proxy-command for kernel.org
gitproxy=default-proxy ; for all the rest
```
```
; HTTP
[http]
sslVerify
[http "https://weak.example.com"]
sslVerify = false
cookieFile = /tmp/cookie.txt
```
你可以將filemode設置為true
```
% git config core.filemode true
```
假設的代理命令條目實際上有一個后綴來識別它們適用的URL。以下是如何將kernel.org的條目更改為“ssh”。
```
% git config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$'
```
這確保僅替換kernel.org的鍵/值對。
要刪除diff的重命名配置,請執行
```
% git config --unset diff.renames
```
如果要刪除多個配置值中的其中一個配置(如上面的core.gitproxy),則必須提供與該配置值匹配的正則表達式。
要查詢給定鍵的值,請執行
```
% git config --get core.filemode
```
要么
```
% git config core.filemode
```
或者,查詢多配置值中的某個配置值:
```
% git config --get core.gitproxy "for kernel.org$"
```
如果您想知道多配置值的所有值,請執行以下操作:
```
% git config --get-all core.gitproxy
```
如果你想冒點險,你可以用新的值取代所有的core.gitproxy
```
% git config --replace-all core.gitproxy ssh
```
但是,如果您真的只想替換默認代理的行配置,即沒有“for ...”后綴的行,請執行以下操作:
```
% git config core.gitproxy ssh '! for '
```
要實際只匹配帶有感嘆號的值,您必須這樣做
```
% git config section.key value '[!]'
```
要添加新代理,而不更改任何現有代理,請使用
```
% git config --add core.gitproxy '"proxy-command" for example.com'
```
在腳本中使用配置中的自定義顏色的示例:
```
#!/bin/sh
WS=$(git config --get-color color.diff.whitespace "blue reverse")
RESET=$(git config --get-color "" "reset")
echo "${WS}your whitespace color or blue reverse${RESET}"
```
對于`https://weak.example.com`的URL,`http.sslVerify`設置為false,而其他所有URL設置為`true`:
```
% git config --type=bool --get-urlmatch http.sslverify https://good.example.com
true
% git config --type=bool --get-urlmatch http.sslverify https://weak.example.com
false
% git config --get-urlmatch http https://weak.example.com
http.cookieFile /tmp/cookie.txt
http.sslverify false
```
## 配置文件
Git配置文件包含許多影響Git命令行為的變量。每個存儲庫中的文件`.git/config`和可選`config.worktree`(參見下面的`extensions.worktreeConfig`)用于存儲該存儲庫的配置,`$HOME/.gitconfig`用于存儲每用戶配置,會回退`.git/config`文件中的配置。文件`/etc/gitconfig`可用于存儲系統范圍的默認配置。
配置變量由Git管道和瓷器使用。變量拆分為sections,其中變量名稱是最后一個點分隔的后面段,而section名稱是最后一個點之前的所有內容。變量名稱不區分大小寫,僅允許使用字母數字字符和`-`,并且必須以字母字符開頭。一些變量可能會出現多次;我們說那個變量是多值的。
### 句法
語法相當靈活和寬容;空白大多被忽略了。_#_ 號和 _;_ 分號表示該字符開始到行尾都是注釋,空行被忽略。
配置文件由sections和變量組成。一個section以方括號中的section名稱開頭,并一直持續到下一section開始。section名稱不區分大小寫。只允許使用字母數字字符、`-`和`.`。每個變量必須屬于某個section,這意味著在第一次設置變量之前必須有一個section。
section可以進一步劃分為小的section。要開始小的section,請將其名稱放在雙引號中,并用空格與section隔開,如下例所示:
```
[section "subsection"]
```
子節名稱區分大小寫,可以包含除換行符和空字節之外的任何字符。可以通過`\"`和`\\`轉義,包含雙引號和反斜杠。讀取時會刪除其他字符前面的反斜杠;例如,`\t`讀取為`t`,`\0`讀取為`0`,section不能跨越多行。變量可以直接屬于某個section或給定的子section。你可以有`[section]`,但是可以不必有`[section "subsection"]`。
還有一個不推薦使用的`[section.subsection]`語法。使用此語法,子section名稱將轉換為小寫,并且還區分大小寫。這些子section名稱遵循與section名稱相同的限制。
所有其他行(以及節標題后面的行的其余部分)被識別為設置變量,形式為 _name = value_(或者只是`name`,通過一個短劃線用來說明變量是布爾值“true”)。變量名稱不區分大小寫,僅允許使用字母、數字字符和`-`,并且必須以字母開頭。
定義值的行可以通過以`\`結束來繼續到下一行;反引號和行尾被剝離。_name =_ 之后的空格,第一個注釋字符`#`或`;`之后的行的剩余部分,和該行尾部的空格都會被被丟棄,除非它們用雙引號括起來。值中的內部空格逐字保留。
在雙引號內,使用雙引號`"`和反斜杠`\`字符必須轉義:對`"`使用`\"`,而對`\`使用`\\`。
識別以下轉義序列(在`\"`和`\\`旁邊):換行符(NL)的`\n`,水平制表的`\t`(HT,TAB)和退格(BS)的`\b`。其他char轉義序列(包括八進制轉義序列)無效。
### 包括
`include`和`includeIf`部分允許您包含來自其他來源的配置指令。這些section的行為相同,但`includeIf`的section如果其條件未評估為真則可以忽略;請參閱下面的“條件包含”。
您可以通過設置`include.path`(或`includeIf.*.path`)的值為另一個配置文件的文件名,來包含這個配置文件的配置。該變量將路徑名作為其值,`并受波形擴展的影響`。這些變量可以多次給出。
文件的內容會被立刻載入配,就好像它們已在include偽指令的位置找到一樣。如果變量的值是相對路徑,則該路徑被認為是相對于包含include偽指令的配置文件路徑。請參閱下面的示例。
### 有條件的包括
您可以通過將`includeIf.<condition>.path`變量設置為要包含的文件的名稱來有條件地包含另一個配置文件。
條件以關鍵字后跟冒號開頭,一些數據的格式和含義取決于關鍵字。支持的關鍵字是:
```
gitdir
```
關鍵字`gitdir:`后面的數據用作glob模式。如果.git目錄的位置與模式匹配,則滿足包含條件。
.git位置可以自動發現,也可以來自`$GIT_DIR`環境變量。如果通過.git文件(例如,從子模塊或鏈接的工作樹)自動發現存儲庫,則.git位置將是.git目錄所在的最終位置,而不是.git文件所在的位置。
該模式可以包含標準的通配符和另外兩個可以匹配多個路徑組件的`**/`和`/**`。有關詳細信息,請參閱 [gitignore[5]](https://git-scm.com/docs/gitignore) 。為了方便:
* 如果模式以`~/`開頭,則`~`將替換為環境變量`HOME`的內容。
* 如果模式以`./`開頭,則將其替換為包含當前配置文件的目錄。
* 如果模式不以`~/`,`./`或`/`開始,則`**/`將自動添加前置。例如,模式`foo/bar`變為`**/foo/bar`并與`/any/path/to/foo/bar`匹配。
* 如果模式以`/`結束,則會自動添加`**`。例如,模式`foo/`變為`foo/**`。換句話說,它以遞歸方式匹配“foo”和內部的所有內容。
```
gitdir/i
```
這與`gitdir`相同,只是匹配是不區分大小寫的(例如,在不區分大小寫的文件系統上)
關于通過`gitdir`和`gitdir/i`進行匹配的更多注意事項:
* `$GIT_DIR`中的符號鏈接在匹配之前未解析。
* 符號鏈接和路徑的realpath版本將在`$GIT_DIR`之外匹配。例如,如果`~/git`是`/mnt/storage/git`的符號鏈接,那么`gitdir:~/git`和`gitdir:/mnt/storage/git`都會匹配。
在v2.13.0中此功能的初始版本中并非如此,該版本僅匹配realpath版本。想要與此功能的初始版本兼容的配置需要僅指定realpath版本或兩個版本。
* 請注意,“../”并不特殊,并且會按字面意思匹配,這不太可能是您想要的。
### 示例
```
# Core variables
[core]
; Don't trust file modes
filemode = false
```
```
# Our diff algorithm
[diff]
external = /usr/local/bin/diff-wrapper
renames = true
```
```
[branch "devel"]
remote = origin
merge = refs/heads/devel
```
```
# Proxy settings
[core]
gitProxy="ssh" for "kernel.org"
gitProxy=default-proxy ; for the rest
```
```
[include]
path = /path/to/foo.inc ; include by absolute path
path = foo.inc ; find "foo.inc" relative to the current file
path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory
```
```
; include if $GIT_DIR is /path/to/foo/.git
[includeIf "gitdir:/path/to/foo/.git"]
path = /path/to/foo.inc
```
```
; include for all repositories inside /path/to/group
[includeIf "gitdir:/path/to/group/"]
path = /path/to/foo.inc
```
```
; include for all repositories inside $HOME/to/group
[includeIf "gitdir:~/to/group/"]
path = /path/to/foo.inc
```
```
; relative paths are always relative to the including
; file (if the condition is true); their location is not
; affected by the condition
[includeIf "gitdir:/path/to/group/"]
path = foo.inc
```
### 值
許多變量的值被視為一個簡單的字符串,但是有些變量采用特定類型的值,并且有關于如何拼寫它們的規則。
```
boolean
```
當一個變量被認為是一個布爾值時,_true_ 和 _false_ 接受許多同義詞;這些都是不區分大小寫的。
```
true
```
字面意思是`yes`,`on`,`true`和`1`。此外,變量沒有定義`= <value>`的話,默認值是true。
```
false
```
字面意思是`no`,`off`,`false`,`0`和空字符串。
使用`--type=bool`類型說明符將值轉換為規范形式時,_git config_ 將確保輸出為“true”或“false”(拼寫為小寫)。
```
integer
```
指定各種大小的許多變量的值可以后綴為`k`,`M`,表示“將數字擴大1024倍”,“1024x1024倍”等。
```
color
```
采用顏色的變量的值是一個顏色列表(最多兩個,一個用于前景,一個用于背景)和屬性(多個您想要的),用空格分隔。
接受的基本顏色是`normal`,`black`,`red`,`green`,`yellow`,`blue`,`magenta`,`cyan`和`white`。給出的第一種顏色是前景,第二是背景。
顏色也可以作為0到255之間的數字給出,這些使用ANSI 256色模式(但請注意,并非所有終端都支持此功能)。如果您的終端支持它,您也可以將24位RGB值指定為十六進制,如`#ff0ab3`。
接受的屬性有`bold`,`dim`,`ul`,`blink`,`reverse`,`italic`和`strike`(用于劃掉或“刪除”字母)。任何屬性相對于顏色(之前,之后或之間)的位置都無關緊要。可以通過在前綴`no`或`no-`(例如,`noreverse`,`no-ul`等)來關閉特定屬性。
空顏色字符串根本不產生顏色效果。這可用于避免在不完全禁用顏色的情況下著色特定元素。
對于git的預定義顏色槽,屬性應在彩色輸出中每個項目的開頭重置。因此,將`color.decorate.branch`設置為`black`將在普通`black`中繪制該分支名稱,即使同一輸出行上的前一項(例如`log --decorate`輸出中的分支名稱列表前的左括號)設置為被涂上`bold`或其他一些屬性。但是,自定義日志格式可能會執行更復雜和分層的著色,而否定的格式在那里可能會有用。
```
pathname
```
獲取路徑名值的變量可以被賦予以“`~/`”或“`~user/`”開頭的字符串,并且通常的波浪號擴展發生在這樣的字符串中:`~/`擴展為`$HOME`的值,`~user/`為指定用戶的根目錄。
### 變量
請注意,此列表不全面,不一定完整。對于特定于命令的變量,您可以在相應的手冊頁中找到更詳細的說明。
其他與git相關的工具可能并且確實使用它們自己的變量。在發明用于您自己的工具的新變量時,請確保它們的名稱與Git本身和其他常用工具使用的名稱不沖突,并在文檔中對其進行描述。
```
advice.*
```
這些變量控制旨在幫助新用戶的各種可選幫助消息。所有 _advice.*_ 變量默認為 _true_,你可以通過將這些設置為`false`告訴Git你不需要幫助:
```
pushUpdateRejected
```
如果要同時禁用 _pushNonFFCurrent_,_pushNonFFMatching_ , _pushAlreadyExists_ ,和 _pushFetchFirst_,和 _pushNeedsForce_ 變量,請將此變量設置為 _false_。
```
pushNonFFCurrent
```
當 [git-push [1]](https://git-scm.com/docs/git-push) 由于對當前分支的非快進更新而失敗時顯示的建議。
```
pushNonFFMatching
```
當您運行 [git-push [1]](https://git-scm.com/docs/git-push) 并顯式推送 _匹配refs_ 時顯示的建議(即您使用 _:_,或指定了不是您當前的refspe分支)并導致非快進錯誤。
```
pushAlreadyExists
```
當 [git-push [1]](https://git-scm.com/docs/git-push) 拒絕不符合快進條件的更新(例如,標簽)時顯示。
```
pushFetchFirst
```
當 [git-push [1]](https://git-scm.com/docs/git-push) 拒絕嘗試覆蓋指向我們沒有的對象的遠程引用的更新時顯示。
```
pushNeedsForce
```
當 [git-push [1]](https://git-scm.com/docs/git-push) 拒絕嘗試覆蓋指向不是commit-ish的對象的遠程ref的更新時,或者在不是commit-ish的對象上進行遠程ref操作。
```
pushUnqualifiedRefname
```
當 [git-push [1]](https://git-scm.com/docs/git-push) 放棄嘗試根據源和目標進行猜測時顯示源所屬的遠程ref命名空間,但我們仍然可以建議用戶推送到refs/heads/* 或 refs/tags/*基于源對象的類型。
```
statusHints
```
在 [git-commit [1]](https://git-scm.com/docs/git-commit) 中寫入提交消息時顯示的模板中顯示如何從 [git-status [1]](https://git-scm.com/docs/git-status) 的輸出中的當前狀態開始的指示,以及切換分支時,[git-checkout [1]](https://git-scm.com/docs/git-checkout) 顯示的幫助信息。
```
statusUoption
```
建議考慮在 [git-status [1]](https://git-scm.com/docs/git-status) 中使用`-u`選項,當命令需要超過2秒來枚舉未跟蹤文件時。
```
commitBeforeMerge
```
當 [git-merge [1]](https://git-scm.com/docs/git-merge) 拒絕合并以避免覆蓋本地更改時顯示的建議。
```
resetQuiet
```
建議考慮在 [git-reset [1]](https://git-scm.com/docs/git-reset) 中使用`--quiet`選項,當命令需要2秒以上的時間來枚舉復位后的非分段更改時。
```
resolveConflict
```
當沖突阻止執行操作時,各種命令顯示的建議。
```
implicitIdentity
```
在從系統用戶名和域名中猜出您的信息時,如何設置身份配置的建議。
```
detachedHead
```
使用 [git-checkout [1]](https://git-scm.com/docs/git-checkout) 移動到分離HEAD狀態時顯示的建議,以指示如何在事后創建本地分支。
```
checkoutAmbiguousRemoteBranchName
```
當 [git-checkout [1]](https://git-scm.com/docs/git-checkout) 的參數,在有多個遠端的場景下,模糊地解析為遠程跟蹤分支時,如果明確的參數會導致遠程跟蹤分支被檢出,則顯示建議。請參閱`checkout.defaultRemote`配置變量,如何在給定遠端的某些場景下使用。
```
amWorkDir
```
當 [git-am [1]](https://git-scm.com/docs/git-am) 無法應用時,顯示補丁文件位置的建議。
```
rmHints
```
如果 [git-rm [1]](https://git-scm.com/docs/git-rm) 的輸出失敗,請顯示如何從當前狀態開始的指示。
```
addEmbeddedRepo
```
當你意外地在另一個內部添加一個git repo時該怎么做的建議。
```
ignoredHook
```
如果鉤子被忽略,則顯示建議,因為鉤子未設置為可執行文件。
```
waitingForEditor
```
只要Git正在等待用戶的編輯輸入,就將消息打印到終端。
```
core.fileMode
```
告訴Git是否要遵守工作樹中文件的可執行權限。
當檢出標記為可執行的文件,或者以可執行權限檢出非可執行文件時,在某些文件系統中會丟失可執行權限。 [git-clone [1]](https://git-scm.com/docs/git-clone) 或 [git-init [1]](https://git-scm.com/docs/git-init) 會探測當前文件系統,看它是否能正確處理文件權限,并根據需要自動設置此變量。
但是,存儲庫可能位于正確處理文件模式的文件系統上,并且此變量在開始配置時設置為 _true_ ,但稍后從其他環境訪問可能會失去文件模式的設置(例如,通過導出CIFS掛載的ext4 ,使用Git for Windows或Eclipse訪問Cygwin創建的存儲庫)。在這種情況下,可能需要將此變量設置為 _false_ 。參見 [git-update-index [1]](https://git-scm.com/docs/git-update-index) 。
默認值為true(在配置文件中未指定core.filemode時)。
```
core.hideDotFiles
```
(僅限Windows)如果為true,將標記新創建的、以點開頭的命名的目錄和文件為隱藏。如果 _dotGitOnly_ ,則只隱藏`.git/`目錄,但沒有其他以點開頭的文件。默認模式為 _dotGitOnly_ 。
```
core.ignoreCase
```
內部變量,支持各種變通方法,使Git能夠更好地處理不區分大小寫的文件系統,如APFS,HFS +,FAT,NTFS等。例如,如果要在某個目錄列表下找出“makefile”文件,Git會將“Makefile”輸出,Git認為它們是同一個文件,并繼續記住它為“Makefile”。
默認值為false,除了 [git-clone [1]](https://git-scm.com/docs/git-clone) 或 [git-init [1]](https://git-scm.com/docs/git-init) 將在創建存儲庫時預測并設置core.ignoreCase為true。
在您的操作系統和文件系統上,Git依賴于正確配置此變量的值。修改此值可能會導致意外后果。
```
core.precomposeUnicode
```
此選項僅供Mac OS實現Git使用。當core.precomposeUnicode = true時,Git會恢復Mac OS上以unicode分解的文件名。在Mac OS、Linux或Windows之間共享存儲庫時,這非常有用。(需要適用于Windows 1.7.10或更高版本的Git,或者在cygwin 1.7下使用Git)。如果為false,則Git會完全透明文件名,后者與舊版本的Git向后兼容。
```
core.protectHFS
```
如果設置為true,在HFS+文件系統上,則不允許檢出文件路徑,會被視為等同于`.git`的路徑。在Mac OS上默認為`true`,在其他地方默認為`false`。
```
core.protectNTFS
```
如果設置為true,則不允許簽出可能導致NTFS文件系統出現問題的路徑,例如:與8.3“short”沖突的名稱。在Windows上默認為`true`,在其他地方默認為`false`。
```
core.fsmonitor
```
如果設置,則此變量的值將用作命令,該命令將標識自請求的日期/時間以來可能已更改的所有文件。此信息用于通過避免對未更改的文件進行不必要的處理來加速git操作。請參閱 [githooks [5]](https://git-scm.com/docs/githooks) 的“fsmonitor-watchman”部分。
```
core.trustctime
```
如果為false,則忽略索引與工作樹之間的ctime差異;當inode更改時間被Git之外的某些東西(文件系統爬蟲和一些備份系統)定期修改時,將非常有用。參見 [git-update-index [1]](https://git-scm.com/docs/git-update-index) 。默認為True。
```
core.splitIndex
```
如果為true,則將使用索引的拆分索引功能。參見 [git-update-index [1]](https://git-scm.com/docs/git-update-index) 。默認為False。
```
core.untrackedCache
```
確定如何處理索引的未跟蹤緩存功能。如果未設置此變量或將其設置為`keep`,則將保留該值。如果設置為`true`,將自動添加。如果設置為`false`,它將自動刪除。在將其設置為`true`之前,您應該檢查mtime是否在您的系統上正常工作。參見 [git-update-index [1]](https://git-scm.com/docs/git-update-index) 。 `keep`默認情況下。
```
core.checkStat
```
當缺失或設置為`default`時,將檢查stat結構中的許多字段以檢測文件是否已被修改,因為Git查看了它。當此配置變量設置為`minimal`時,mtime和ctime的亞秒部分,文件所有者的uid和gid,inode編號(以及設備編號,如果Git編譯為使用它),從這些字段中的檢查中排除,只留下mtime的整個第二部分(和ctime,如果設置了`core.trustCtime`)和要檢查的文件大小。
Git的實現不會在某些字段中留下可用的值(例如JGit);通過從比較中排除這些字段,當同個倉庫在被其他系統使用時,`minimal`模式可以幫助實現互操作性。
```
core.quotePath
```
輸出路徑的命令(例如 _ls-files_ , _diff_ )將在路徑名中引用“異常”字符,方法是將路徑名括在雙引號中并使用反斜杠轉義那些字符。和在C語言中轉義控制字符(例如TAB為`\t`,LF為`\n`,反斜杠為`\\`)或值大于0x80的字節(例如,UTF-8中為“micro”的八進制`\302\265`)使用的同樣的方法。如果此變量設置為false,則高于0x80的字節不再被視為“異常”。無論此變量的設置如何,雙引號,反斜杠和控制字符始終都會被轉義。簡單的空格字符不被視為“不尋常”。許多命令可以使用`-z`選項完全逐字輸出路徑名。默認值是true。
```
core.eol
```
設置要在工作目錄中用于標記為文本的文件的行結束類型(通過設置`text`屬性,或者使`text=auto`和Git自動檢測內容為文本)。替代品是 _lf_ , _crlf_ 和 _native_,它使用平臺的原生的行結束符。默認值為`native`。有關行尾轉換的更多信息,請參見 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。請注意,如果`core.autocrlf`設置為`true`或`input`,則忽略該值。
```
core.safecrlf
```
如果為true,則當行結束轉換處于活動狀態時,使Git檢查轉換`CRLF`是否可逆。 Git將驗證命令是直接還是間接修改工作樹中的文件。例如,提交文件后檢出同一文件應該會在工作樹中生成原始文件。如果`core.autocrlf`的當前設置不是這種情況,Git將拒絕該文件。該變量可以設置為“警告”,在這種情況下,Git只會警告不可逆轉換,但繼續操作。
CRLF轉換有可能破壞數據。啟用時,Git會在提交期間將CRLF轉換為LF,在檢出時將LF轉換為CRLF。 Git無法重新創建提交之前包含LF和CRLF混合的文件。對于文本文件,正確的做法是:它校正行結尾符,這樣我們在存儲庫中只有LF行結尾。但對于意外歸類為文本的二進制文件,轉換可能會破壞數據。
如果您提前識別出此類損壞,則可以通過在.gitattributes中明確設置轉換類型來輕松解決此問題。提交后,您仍然在工作樹中保留原始文件,此文件尚未損壞。你可以明確告訴Git這個文件是二進制文件,Git會適當地處理文件。
不幸的是,無法區分清除具有混合行結尾的文本文件和破壞二進制文件的不良影響的期望效果。在這兩種情況下,CRLF都以不可逆轉的方式被移除。對于文本文件,這是正確的做法,因為CRLF是行結尾,而對于二進制文件,轉換CRLF會破壞數據。
請注意,此安全檢查并不意味著在堅持文件時,將為`core.eol`和`core.autocrlf`的不同設置生成與原始文件相同的文件,但僅適用于當前的文件。例如,帶有`LF`的文本文件將被`core.eol=lf`接受,之后可以使用`core.eol=crlf`檢出,在這種情況下,生成的文件將包含`CRLF`,盡管原始文件包含`LF`。但是,在兩個工作樹中,行結束符將是一致的,即所有`LF`或全部`CRLF`,但從不混合。 `core.safecrlf`機制將報告具有混合行結尾的文件。
```
core.autocrlf
```
將此變量設置為“true”,與在所有文件上將`text`屬性設置為“auto”,并將core.eol設置為“crlf”相同。如果要在工作目錄中包含`CRLF`行結尾且存儲庫具有LF行結尾,則設置為true。該變量可以設置為 _input_,在這種情況下不執行輸出轉換。
```
core.checkRoundtripEncoding
```
逗號和/或空格分隔的編碼列表,Git執行UTF-8往返檢查它們是否在`working-tree-encoding`屬性中使用(參見 [gitattributes [5]](https://git-scm.com/docs/gitattributes) )。默認值為`SHIFT-JIS`。
```
core.symlinks
```
如果為false,則將符號鏈接檢出為包含鏈接文本的小型純文本。 [git-update-index [1]](https://git-scm.com/docs/git-update-index) 和 [git-add [1]](https://git-scm.com/docs/git-add) 不會將記錄類型更改為常規文件。在FAT等不支持符號鏈接的文件系統上很有用。
默認值為true,除了 [git-clone [1]](https://git-scm.com/docs/git-clone) 或 [git-init [1]](https://git-scm.com/docs/git-init) 將在創建存儲庫時預測并設置core.symlinks為false。
```
core.gitProxy
```
執行(作為 _命令主機端口_)的“代理命令”,在使用Git協議進行更新時,將建立替代與遠程服務器的直接連接方式。如果變量值在“COMMAND for DOMAIN”格式中,則該命令僅應用于以指定域字符串結尾的主機名。該變量可以多次設置并按給定順序匹配;第一次匹配上就不繼續往下匹配了。
可以被`GIT_PROXY_COMMAND`環境變量覆蓋(它總是普遍適用,沒有特殊的“for”處理)。
特殊字符串`none`可用作代理命令,以指定不為給定的域模式使用代理。這對于從代理使用中排除防火墻內的服務器非常有用,同時默認為外部域的公共代理。
```
core.sshCommand
```
如果設置了此變量,`git fetch`和`git push`將在需要連接到遠程系統時使用指定的命令而不是`ssh`。該命令與`GIT_SSH_COMMAND`環境變量的格式相同,并在設置環境變量時被覆蓋。
```
core.ignoreStat
```
如果為true,Git將避免使用lstat()調用來檢測文件是否已更改,方法是為索引和工作樹中相同更新的跟蹤文件設置“假定未更改”位。
當在Git之外修改文件時,用戶將需要明確地分階段修改文件(例如,參見 [git-update-index [1]](https://git-scm.com/docs/git-update-index) 中的 _示例_ 部分)。 Git通常不會檢測這些文件的更改。
這在lstat()調用非常慢的系統(例如CIFS / Microsoft Windows)上很有用。
默認為False。
```
core.preferSymlinkRefs
```
將替代HEAD和其他符號引用文件的默認“symref”格式,并使用符號鏈接。這有時需要使用期望HEAD成為符號鏈接的舊腳本。
```
core.alternateRefsCommand
```
當顯示可用歷史記錄的提示時,將使用shell執行指定的命令,而不是 [git-for-each-ref [1]](https://git-scm.com/docs/git-for-each-ref) 。第一個參數是備用的絕對路徑。輸出必須每行包含一個十六進制對象id(即,與`git for-each-ref --format='%(objectname)'`產生的相同)。
請注意,您通常不能將`git for-each-ref`直接放入配置值,因為它不會將存儲庫路徑作為參數(但您可以將上面的命令包裝在shell腳本中)。
```
core.alternateRefsPrefixes
```
列出備用引用時,僅列出以給定前綴開頭的引用。前綴匹配,好像它們作為 [git-for-each-ref [1]](https://git-scm.com/docs/git-for-each-ref) 的參數給出。要列出多個前綴,請用空格分隔它們。如果設置了`core.alternateRefsCommand`,則設置`core.alternateRefsPrefixes`無效。
```
core.bare
```
如果為true,則假定此存儲庫為 _bare_ 并且沒有與之關聯的工作目錄。如果是這種情況,將禁用許多與工作目錄相關的命令,例如 [git-add [1]](https://git-scm.com/docs/git-add) 或 [git-merge [1]](https://git-scm.com/docs/git-merge) 。
創建存儲庫時, [git-clone [1]](https://git-scm.com/docs/git-clone) 或 [git-init [1]](https://git-scm.com/docs/git-init) 會自動預測此設置。默認情況下,假定以“/.git”結尾的存儲庫不是bare(bare=false),而假定所有其他存儲庫都是bare(bare=ture)。
```
core.worktree
```
設置工作樹根目錄的路徑。如果設置了`GIT_COMMON_DIR`環境變量,則會忽略core.worktree,而不會用于確定工作樹的根。這可以被`GIT_WORK_TREE`環境變量和`--work-tree`命令行選項覆蓋。該值可以是絕對路徑或相對于.git目錄的路徑,該目錄由--git-dir或GIT_DIR指定,或自動發現。如果指定了--git-dir或GIT_DIR但未指定--work-tree,GIT_WORK_TREE和core.worktree,則當前工作目錄將被視為工作樹的頂級。
請注意,即使在目錄的“.git”子目錄中的配置文件中設置此變量,并且其值與后一目錄不同(例如“/path/to/.git/config”已將core.worktree設置為“/different/path”),這很可能是一個配置錯誤。在“/path/ to”目錄中運行Git命令仍將使用“/different/path”作為工作樹的根目錄,除非您知道自己在做什么,否則可能會造成混淆(例如,您正在創建一個只讀快照與存儲庫的通常工作樹不同的位置的相同索引)。
```
core.logAllRefUpdates
```
啟用reflog。對ref<ref>的更新記錄到文件“`$GIT_DIR/logs/<ref>`”,方法是附加新舊SHA-1,日期/時間和更新原因,但僅限于文件存在時。如果此配置變量設置為`true`,則會自動為分支頭創建缺省的“`$GIT_DIR/logs/<ref>`”文件(即在`refs/heads/`下),遠程ref(即在`refs/remotes/`下),評論ref(即在`refs/notes/`下) )和符號ref `HEAD`。如果設置為`always`,則會自動為`refs/`下的任何參考創建缺少的reflog。
此信息可用于確定“2天前”分支的提示是什么。
默認情況下,此值在具有與之關聯的工作目錄的存儲庫中為true,默認情況下在空存儲庫中為false。
```
core.repositoryFormatVersion
```
標識存儲庫格式和布局版本的內部變量。
```
core.sharedRepository
```
當 _組_(或 _true_ )時,存儲庫可在組中的多個用戶之間共享(確保所有文件和對象都是組內可寫的)。當 _所有_(或 _世界_ 或 _所有人_)時,除了可分組之外,所有用戶都可以讀取存儲庫。當 _umask_ (或 _false_ )時,Git將使用umask(2)報告的權限。當 _0xxx_ ,其中 _0xxx_ 是八進制數時,存儲庫中的文件將具有此模式值。 _0xxx_ 將覆蓋用戶的umask值(而其他選項只會覆蓋用戶的umask值的請求部分)。示例: _0660_ 將對所有者和組進行可讀/可寫,但其他人無法訪問(相當于_組_,除非umask是例如 _0022_ ) 。 _0640_ 是一個可讀取組但不可寫入組的存儲庫。參見 [git-init [1]](https://git-scm.com/docs/git-init) 。默認為False。
```
core.warnAmbiguousRefs
```
如果為true,Git會警告您,如果您傳遞的引用名稱不明確并且可能與存儲庫中的多個引用相匹配。默認為True。
```
core.compression
```
整數-1..9,表示默認壓縮級別。 -1是zlib的默認值。 0表示沒有壓縮,1..9是各種速度/大小權衡,9表示最慢。如果設置,則為其他壓縮變量提供默認值,例如`core.looseCompression`和`pack.compression`。
```
core.looseCompression
```
整數-1..9,表示不在包文件中的對象的壓縮級別。 -1是zlib的默認值。 0表示沒有壓縮,1..9是各種速度/大小權衡,9表示最慢。如果未設置,則默認為core.compression。如果未設置,則默認為1(最佳速度)。
```
core.packedGitWindowSize
```
在單個映射操作中映射到內存的pack文件的字節數。設置大的值時,可以允許您的系統更快地處理較少數量的大包文件。設置較小值時,會因調用操作系統內存管理器頻繁,而導致對性能產生負面影響,但在訪問大量大型文件包時可能會提高性能。
如果在編譯時設置NO_MMAP,則默認值為1 MiB,否則32位平臺上為32 MiB,64位平臺上為1 GiB。這應該適用于所有用戶/操作系統。您可能不需要調整此值。
支持 _k_ , _m_ 或 _g_ 的通用單位后綴。
```
core.packedGitLimit
```
從包文件同時映射到內存的最大字節數。如果Git需要一次訪問多個字節以完成操作,它將取消映射現有區域以回收進程中的虛擬地址空間。
在32位平臺上默認為256 MiB,在64位平臺上默認為32 TiB(實際上無限制)。對于所有用戶/操作系統,這應該是合理的,除了最大的項目。您可能不需要調整此值。
支持 _k_ , _m_ 或 _g_ 的通用單位后綴。
```
core.deltaBaseCacheLimit
```
保留用于緩存可能由多個已分層對象引用的基礎對象的最大字節數。通過將整個解壓縮的基礎對象存儲在高速緩存中,Git能夠避免多次解包和解壓縮經常使用的基礎對象。
所有平臺上的默認值為96 MiB。對于所有用戶/操作系統,這應該是合理的,除了最大的項目。您可能不需要調整此值。
支持 _k_ , _m_ 或 _g_ 的通用單位后綴。
```
core.bigFileThreshold
```
大于此大小的文件將直接存儲,而不會嘗試增量壓縮。在沒有增量壓縮的情況下存儲大型文件可以避免過多的內存使用,但會增加磁盤使用量。此外,大于此大小的文件始終被視為二進制文件。
所有平臺上的默認值為512 MiB。對于大多數項目來說這應該是合理的,因為源代碼和其他文本文件仍然可以進行增量壓縮,但是更大的二進制媒體文件不會。
支持 _k_ , _m_ 或 _g_ 的通用單位后綴。
```
core.excludesFile
```
除了 _.gitignore_ (每個目錄)和 _.git/info/exclude_ 之外,還可指定包含不打算跟蹤的文件路徑名。默認為`$XDG_CONFIG_HOME/git/ignore`。如果`$XDG_CONFIG_HOME`未設置或為空,則使用`$HOME/.config/git/ignore`。見 [gitignore [5]](https://git-scm.com/docs/gitignore) 。
```
core.askPass
```
交互式地請求密碼的一些命令(例如,svn和http接口)可以被告知使用通過該變量的值給出的外部程序。可以被`GIT_ASKPASS`環境變量覆蓋。如果未設置,則回退到`SSH_ASKPASS`環境變量的值,或者,如果失敗,則返回一個簡單的密碼提示。外部程序應作為命令行參數給出合適的提示,并在其STDOUT上寫入密碼。
```
core.attributesFile
```
除了 _.gitattributes_ (每個目錄)和 _.git/info/attributes_ 之外,Git還會查看此文件中的屬性(參見 [gitattributes [5]](https://git-scm.com/docs/gitattributes) ) 。路徑擴展的方式與`core.excludesFile`相同。其默認值為`$XDG_CONFIG_HOME/git/attributes`。如果`$XDG_CONFIG_HOME`未設置或為空,則使用`$HOME/.config/git/attributes`。
```
core.hooksPath
```
默認情況下,Git會在 `_$GIT_DIR/hooks_` 目錄中查找你的鉤子。將此設置為不同的路徑時,例如 _/etc/git/hooks_ ,Git會嘗試在該目錄中找到你的鉤子,例如 _/etc/git/hooks/pre-receive_ 而不是 `_$GIT_DIR/hooks/pre-receive_`。
路徑可以是絕對路徑也可以是相對路徑。相對路徑被視為相對于運行鉤子的目錄(參見 [githooks [5]](https://git-scm.com/docs/githooks) 的“DESCRIPTION”部分)。
如果您希望集中配置Git鉤子而不是基于每個存儲庫配置它們,或者作為一個更加靈活和集中的替代方案來使用`init.templateDir`來更改默認掛鉤,則此配置變量很有用。
```
core.editor
```
當此值被設置時,并且未設置環境變量`GIT_EDITOR`,在執行類似`commit`和`tag`等命令時,允許您通過啟動編輯器編輯消息。見 [git-var [1]](https://git-scm.com/docs/git-var) 。
```
core.commentChar
```
在執行類似`commit`和`tag`等命令時,會在編輯消息的開頭的添加設置的字符,并在編輯器退出后刪除它們(默認 _#_)。
如果設置為“auto”,`git-commit`將選擇一個字符,該字符不是現有提交消息中任何行的開頭字符。
```
core.filesRefLockTimeout
```
嘗試鎖定單個引用時重試的時間長度(以毫秒為單位)。值0表示根本不重試; -1意味著無限期地嘗試。默認值為100(即重試100毫秒)。
```
core.packedRefsTimeout
```
嘗試鎖定`packed-refs`文件時重試的時間長度(以毫秒為單位)。值0表示根本不重試; -1意味著無限期地嘗試。默認值為1000(即重試1秒)。
```
core.pager
```
文本查看器供Git命令使用(例如, _less_ )。該值應由shell解釋。首選順序是`$GIT_PAGER`環境變量,然后是`core.pager`配置,然后是`$PAGER`,然后是在編譯時選擇的默認值(通常是 _less_)。
當未設置`LESS`環境變量時,Git將其設置為`FRX`(如果設置了`LESS`環境變量,Git根本不會更改它)。如果您想有選擇地覆蓋`LESS`的Git默認設置,您可以將`core.pager`設置為例如`less -S`。這將由Git傳遞給shell,它將最終命令轉換為`LESS=FRX less -S`。環境不設置`S`選項,但命令行會設置,指示較少截斷長行。同樣,將`core.pager`設置為`less -+F`將從命令行取消激活環境指定的`F`選項,取消激活`less`的“退出,如果一個屏幕”行為。可以專門為特定命令激活一些標志:例如,將`pager.blame`設置為`less -S`只能為`git blame`啟用行截斷。
同樣,當未設置`LV`環境變量時,Git將其設置為`-c`。您可以通過將`LV`導出為其他值或將`core.pager`設置為`lv +c`來覆蓋此設置。
```
core.whitespace
```
要注意一系列以逗號分隔的常見空格問題。 _git diff_ 將使用`color.diff.whitespace`突出顯示它們, _git apply --whitespace = error_ 會將它們視為錯誤。您可以為`-`添加前綴以禁用其中任何一個(例如`-trailing-space`):
* `blank-at-eol`將行末尾的尾隨空格視為錯誤(默認情況下啟用)。
* `space-before-tab`將在行的初始縮進部分中的制表符之前出現的空格字符視為錯誤(默認情況下啟用)。
* `indent-with-non-tab`將帶有空格字符而不是等效選項卡縮進的行視為錯誤(默認情況下不啟用)。
* `tab-in-indent`將行的初始縮進部分中的制表符視為錯誤(默認情況下不啟用)。
* `blank-at-eof`將在文件末尾添加的空行視為錯誤(默認情況下啟用)。
* `trailing-space`是涵蓋`blank-at-eol`和`blank-at-eof`的簡寫。
* `cr-at-eol`將行尾處的回車處理作為行終止符的一部分,即使用它,如果此回車符之前的字符不是空格(默認情況下未啟用),則`trailing-space`不會觸發。
* `tabwidth=<n>`告訴標簽占用多少個字符位置;這與`indent-with-non-tab`和Git修復`tab-in-indent`錯誤有關。默認選項卡寬度為8.允許的值為1到63。
```
core.fsyncObjectFiles
```
在編寫目標文件時,此布爾值將啟用 _fsync()_。
這對于正確排序數據的文件系統來說是浪費時間和精力的,但對于不使用日志(傳統UNIX文件系統)或僅使用日志元數據而不是文件內容(OS X的HFS+或Linux)的文件系統非常有用。 ext3帶有“data = writeback”)。
```
core.preloadIndex
```
為 _git diff_ 等操作啟用并行索引預加載
這可以加速像 _git diff_ 和 _git status_ 這樣的操作,特別是在像NFS這樣具有弱緩存語義和相對較高的IO延遲的文件系統上。啟用后,Git將并行執行與文件系統數據的索引比較,從而允許重疊IO。默認為true。
```
core.unsetenvvars
```
僅限Windows:以逗號分隔的環境變量名稱列表,需要在生成任何其他進程之前取消設置。默認為`PERL5LIB`,以說明Git for Windows堅持使用自己的Perl解釋器。
```
core.createObject
```
您可以將其設置為 _link_ ,在這種情況下,使用硬鏈接后刪除源來確保對象創建不會覆蓋現有對象。
在某些文件系統/操作系統組合上,這是不可靠的。將此配置設置為 _rename_;但是,這將刪除檢查,以確保不會覆蓋現有的目標文件。
```
core.notesRef
```
顯示提交消息時,還會顯示存儲在給定引用中的注釋。ref必須完全合格。如果給定的ref不存在,則不是錯誤,而是表示不應打印??任何注釋。
此設置默認為“refs/notes/commits”,它可以被`GIT_NOTES_REF`環境變量覆蓋。見 [git-notes [1]](https://git-scm.com/docs/git-notes) 。
```
core.commitGraph
```
如果為true,則git將讀取commit-graph文件(如果存在)以解析提交的圖形結構。默認為false。有關詳細信息,請參閱 [git-commit-graph [1]](https://git-scm.com/docs/git-commit-graph) 。
```
core.useReplaceRefs
```
如果設置為`false`,則表現為在命令行上給出了`--no-replace-objects`選項。有關詳細信息,請參閱 [git [1]](https://git-scm.com/docs/git) 和 [git-replace [1]](https://git-scm.com/docs/git-replace) 。
```
core.multiPackIndex
```
使用multi-pack-index文件使用單個索引跟蹤多個packfiles。請參見[多包裝索引設計文檔](technical/multi-pack-index.html)。
```
core.sparseCheckout
```
啟用“稀疏檢出”功能。有關詳細信息,請參閱 [git-read-tree [1]](https://git-scm.com/docs/git-read-tree) 中的“稀疏檢出”部分。
```
core.abbrev
```
設置長度對象名稱為縮寫。如果未指定或設置為“auto”,則根據存儲庫中打包對象的近似數量計算適當的值,這有望使縮寫對象名稱在一段時間內保持唯一。最小長度為4。
```
add.ignoreErrors
add.ignore-errors (deprecated)
```
告訴 _git add_ 在繼續添加文件時,由于索引錯誤而無法添加某些文件。相當于 [git-add [1]](https://git-scm.com/docs/git-add) 的`--ignore-errors`選項。不推薦使用`add.ignore-errors`,因為它不遵循配置變量的通常命名約定。
```
alias.*
```
[git [1]](https://git-scm.com/docs/git) 命令包裝器的命令別名,例如在定義“alias.last = cat-file commit HEAD”之后,調用“git last”等同于“git cat-file commit HEAD”。為避免使用腳本時出現混淆和麻煩,將忽略隱藏現有Git命令的別名。參數由空格分隔,支持通常的shell引用和轉義。一對引號或反斜杠可用于引用它們。
如果別名擴展以感嘆號為前綴,則將其視為shell命令。例如,定義“alias.new =!gitk --all --not ORIG_HEAD”,調用“git new”等同于運行shell命令“gitk --all --not ORIG_HEAD”。請注意,shell命令將從存儲庫的頂級目錄執行,該目錄可能不一定是當前目錄。通過從原始當前目錄運行 _git rev-parse --show-prefix_ 來設置`GIT_PREFIX`。參見 [git-rev-parse [1]](https://git-scm.com/docs/git-rev-parse) 。
```
am.keepcr
```
如果為true,git-am將使用參數`--keep-cr`調用mbox格式的補丁git-mailsplit。在這種情況下,git-mailsplit不會從以`\r\n`結尾的行中刪除`\r`。可以通過從命令行提供`--no-keep-cr`來覆蓋。參見 [git-am [1]](https://git-scm.com/docs/git-am) , [git-mailsplit [1]](https://git-scm.com/docs/git-mailsplit) 。
```
am.threeWay
```
默認情況下,如果補丁不能完全應用,`git am`將失敗。當設置為true時,如果補丁記錄了應該應用的blob的身份,則此設置告訴`git am`回退到三向合并,并且我們在本地可以獲得這些blob(相當于提供`--3way`選項命令行)。默認為`false`。見 [git-am [1]](https://git-scm.com/docs/git-am) 。
```
apply.ignoreWhitespace
```
當設置為 _chang_ 時,告訴 _git apply_ 忽略空白的變化,與`--ignore-space-change`選項相同。設置為以下之一:no,none,never,false告訴 _git apply_ 尊重所有空格差異。參見 [git-apply [1]](https://git-scm.com/docs/git-apply) 。
```
apply.whitespace
```
告訴 _git apply_ 如何處理空格,方法與`--whitespace`選項相同。參見 [git-apply [1]](https://git-scm.com/docs/git-apply) 。
```
blame.blankBoundary
```
在 [git-blame [1]](https://git-scm.com/docs/git-blame) 中顯示邊界提交的空白提交對象名稱。此選項默認為false。
```
blame.coloring
```
這確定了應用于非blame輸出的著色方案。它可以是 _repeatedLines_ , _highlightRecent_ 或 _none_ 這是默認值。
```
blame.date
```
指定用于在 [git-blame [1]](https://git-scm.com/docs/git-blame) 中輸出日期的格式。如果未設置,則使用iso格式。有關支持的值,請參閱 [git-log [1]](https://git-scm.com/docs/git-log) 中`--date`選項的討論。
```
blame.showEmail
```
在 [git-blame [1]](https://git-scm.com/docs/git-blame) 中顯示作者電子郵件而不是作者姓名。此選項默認為false。
```
blame.showRoot
```
不要將root提交視為 [git-blame [1]](https://git-scm.com/docs/git-blame) 中的邊界。此選項默認為false。
```
branch.autoSetupMerge
```
告訴 _git branch_ 和 _git checkout_ 設置新的分支,以便 [git-pull [1]](https://git-scm.com/docs/git-pull) 將從起點分支適當地合并。請注意,即使未設置此選項,也可以使用`--track`和`--no-track`選項按分支選擇此行為。有效設置為:`false` - 未進行自動設置; `true` - 當起點是遠程跟蹤分支時,自動設置完成; `always` - 當起始點是本地分支或遠程跟蹤分支時,自動設置完成。此選項默認為true。
```
branch.autoSetupRebase
```
當使用跟蹤另一個分支的 _git branch_ 或 _git checkout_ 創建一個新分支時,此變量告訴Git設置pull to rebase而不是merge(請參閱“branch.<name>.rebase“)。當`never`時,rebase永遠不會自動設置為true。當`local`時,對于其他本地分支的跟蹤分支,rebase設置為true。當`remote`時,對于跟蹤的遠程跟蹤分支分支,rebase設置為true。當`always`時,對于所有跟蹤分支,rebase將設置為true。有關如何設置分支以跟蹤另一個分支的詳細信息,請參閱“branch.autoSetupMerge”。此選項默認為never。
```
branch.sort
```
當 [git-branch [1]](https://git-scm.com/docs/git-branch) 顯示時,此變量控制分支的排序順序。沒有“--sort =<value>”提供的選項,此變量的值將用作默認值。有關有效值,請參閱 [git-for-each-ref [1]](https://git-scm.com/docs/git-for-each-ref) 字段名稱。
```
branch.<name>.remote
```
當在分支<name>上時,它告訴 _git fetch_ 和 _git push_ 哪個遠程提取/推送到。可以使用`remote.pushDefault`(對于所有分支)覆蓋要推送到的遠程。對于當前分支,推送到的遠程可以被`branch.<name>.pushRemote`進一步覆蓋。如果未配置遠程,或者您不在任何分支上,則默認為`origin`進行提取,`remote.pushDefault`進行推送。另外,`.`(一個句點)是當前的本地存儲庫(一個點存儲庫),請參閱下面的`branch.<name>.merge`的最后一個注釋。
```
branch.<name>.pushRemote
```
當在分支<name>上時,它會覆蓋`branch.<name>.remote`以進行推送。它還會覆蓋從分支<name>推送的`remote.pushDefault`。當您從一個地方(例如您的上游)拉出并推送到另一個地方(例如您自己的發布存儲庫)時,您可能希望設置`remote.pushDefault`以指定要推送到所有分支的遠程,并使用此選項覆蓋它對于特定的分支。
```
branch.<name>.merge
```
與branch<name>.remote一起定義給定分支的上游分支。它告訴 _git fetch_ / _git pull_ / _git rebase_ 哪個分支合并也會影響 _git push_ (參見push.default)。當在分支<name>時,它告訴 _git fetch_ 默認的refspec被標記為在FETCH_HEAD中合并。該值的處理類似于refspec的遠程部分,并且必須匹配從“branch.<name>.remote”給出的遠程提取的ref。合并信息由 _git pull_ (首先調用 _git fetch_ )來查找默認分支以進行合并。如果沒有此選項, _git pull_ 默認合并第一個引用的refspec。指定多個值以獲得章魚合并。如果你想設置 _git pull_ 以便它合并到<name>從本地存儲庫中的另一個分支,您可以將分支.<name>.merge指向所需的分支,并使用相對路徑設置`.`(句點)進行branch.<name>.remote。
```
branch.<name>.mergeOptions
```
設置合并到分支<name>的默認選項。語法和支持的選項與 [git-merge [1]](https://git-scm.com/docs/git-merge) 的選項相同,但目前不支持包含空格字符的選項值。
```
branch.<name>.rebase
```
如果為true,在“git pull”運行時,rebase分支<name>到已獲取的分支之上,而不是從默認遠程合并到默認分支。請參閱“pull.rebase”以非特定于分支的方式執行此操作。
當`merges`時,將`--rebase-merges`選項傳遞給 _git rebase_ ,以便本地合并提交包含在rebase中(有關詳細信息,請參閱 [git-rebase [1]](https://git-scm.com/docs/git-rebase) )。
當perserve時,也將`--preserve-merges`傳遞給 _git rebase_ ,以便通過運行 _git pull_ 不會使本地提交的合并提交變平。
當值為`interactive`時,rebase以交互模式運行。
**注**:這可能是危險的操作;**不要**使用它,除非你理解其含義(詳見 [git-rebase [1]](https://git-scm.com/docs/git-rebase) )。
```
branch.<name>.description
```
分支描述,可以使用`git branch --edit-description`進行編輯。分支描述會自動添加到格式補丁封面信函或請求摘要中。
```
browser.<tool>.cmd
```
指定用于調用指定瀏覽器的命令。在shell中使用作為參數傳遞的URL計算指定的命令。 (參見 [git-web {litdd}瀏覽[1]](https://git-scm.com/docs/git-web{litdd}browse) 。)
```
browser.<tool>.path
```
覆蓋可用于瀏覽HTML幫助的給定工具的路徑(參見 [git-help [1]](https://git-scm.com/docs/git-help) 中的`-w`選項)或gitweb中的工作存儲庫(參見 [git-instaweb [ 1]](https://git-scm.com/docs/git-instaweb) )。
```
checkout.defaultRemote
```
當你運行 _git checkout <something>_ 并且只有一個遠端時,它可能隱含地退回檢查和跟蹤,例如 _origin/<something>_ 。一旦你有超過一個帶有<something>的遠程引用時,這就會停止工作。此設置允許設置首選遠程的名稱,該名稱在消除歧義時應始終獲勝。典型的用例是將其設置為`origin`。
目前,它被[git-checkout [1]](https://git-scm.com/docs/git-checkout) 使用,當 _git checkout <something>_ 時,將在另一個遠端上檢出 _<something>_ 分支,而 [git-worktree [1]](https://git-scm.com/docs/git-worktree) 當 _git worktree add_ 指的是一個遠程分支。此設置可能會在將來用于其他類似checkout的命令或功能。
```
checkout.optimizeNewBranch
```
當使用稀疏檢出時,用于優化“git checkout -b <new_branch>”的性能。設置為true時,git不會根據當前的稀疏檢出設置更新repo。這意味著它不會更新索引中的skip-worktree位,也不會在工作目錄中添加/刪除文件以反映當前的稀疏檢出設置,也不會顯示本地更改。
```
clean.requireForce
```
一個布爾值會使git-clean無效,除非給出-f,-i或-n,默認為true。
```
color.advice
```
一個布爾值用于啟用/禁用提示中顏色(例如,當推送失敗時,請參閱`advice.*`以獲取列表)。可以設置為`always`,`false`(或`never`)或`auto`(或`true`),在這種情況下,只有在錯誤輸出到達終端時才使用顏色。如果未設置,則使用`color.ui`的值(默認為`auto`)。
```
color.advice.hint
```
使用自定義顏色提示。
```
color.blame.highlightRecent
```
這可用于根據每行的更改日期為blame的元數據著色。
此設置應設置為以逗號分隔的顏色和日期設置列表,以顏色開始和結束,日期應設置為從最舊到最新。如果在給定時間戳之前引入該行,則元數據將根據顏色著色,覆蓋較舊的帶時間戳的顏色。
而不是絕對時間戳相對時間戳也起作用,例如2.weeks.ago適用于2周以上的任何事情。
默認為 _藍色,12個月前,白色,1個月前,紅色_,顏色為一年以上的所有顏色為藍色,最近一個月和一年之間的變化保持白色,上個月是紅色的。
```
color.blame.repeatedLines
```
使用自定義顏色作為git-blame輸出的部分,每行重復元信息(例如提交ID,作者姓名,日期和時區)。默認為青色。
```
color.branch
```
一個布爾值在 [git-branch [1]](https://git-scm.com/docs/git-branch) 的輸出中啟用/禁用顏色。可以設置為`always`,`false`(或`never`)或`auto`(或`true`),在這種情況下,顏色僅在輸出到終端時使用。如果未設置,則使用`color.ui`的值(默認為`auto`)。
```
color.branch.<slot>
```
使用自定義顏色進行分支著色。 `<slot>`是`current`(當前分支),`local`(本地分支),`remote`(refs/remotes/中的遠程跟蹤分支),`upstream`(上游跟蹤分支),`plain`(其他參考文獻)。
```
color.diff
```
是否使用ANSI轉義序列為補丁添加顏色。如果設置為`always`, [git-diff [1]](https://git-scm.com/docs/git-diff) , [git-log [1]](https://git-scm.com/docs/git-log) 和 [git-show [1]](https://git-scm.com/docs/git-show) 將使用所有補丁的顏色。如果設置為`true`或`auto`,則這些命令僅在輸出到終端時使用顏色。如果未設置,則使用`color.ui`的值(默認為`auto`)。
這不會影響 [git-format-patch [1]](https://git-scm.com/docs/git-format-patch) 或 _git-diff- *_ 管道命令。可以使用`--color[=<when>]`選項在命令行上覆蓋。
```
color.diff.<slot>
```
使用自定義顏色進行差異著色。 `<slot>`指定修補程序的哪個部分使用指定的顏色,并且是`context`之一(上下文文本 - `plain`是歷史同義詞),`meta`(元信息),`frag`(Hunk header), _func_ (hunk頭中的函數),`old`(刪除行),`new`(添加行),`commit`(提交頭),`whitespace`(突出顯示空格錯誤),`oldMoved` (刪除行),`newMoved`(添加行),`oldMovedDimmed`,`oldMovedAlternative`,`oldMovedAlternativeDimmed`,`newMovedDimmed`,`newMovedAlternative` `newMovedAlternativeDimmed`(參見 _<mode>_ 設置 _- [git-diff [1]](https://git-scm.com/docs/git-diff) 中的顏色移動_ 詳情),`contextDimmed`,`oldDimmed`,`newDimmed`,`contextBold`,`oldBold`和`newBold`(詳見 [git-range-diff [1]](https://git-scm.com/docs/git-range-diff) )。
```
color.decorate.<slot>
```
使用 _git log --decorate_ 輸出的自定義顏色。 `<slot>`分別是本地分支,遠程跟蹤分支,標簽,存儲和HEAD的`branch`,`remoteBranch`,`tag`,`stash`或`HEAD`之一,以及用于移植提交的`grafted`。
```
color.grep
```
設置為`always`時,始終突出顯示匹配項。當`false`(或`never`)時,永遠不會。設置為`true`或`auto`時,僅在將輸出寫入終端時使用顏色。如果未設置,則使用`color.ui`的值(默認為`auto`)。
```
color.grep.<slot>
```
使用自定義顏色進行grep著色。 `<slot>`指定行的哪一部分使用指定的顏色,并且是其中之一
```
context
```
上下文行中不匹配的文本(使用`-A`,`-B`或`-C`時)
```
filename
```
文件名前綴(不使用`-h`時)
```
function
```
功能名稱行(使用`-p`時)
```
lineNumber
```
行號前綴(使用`-n`時)
```
column
```
列號前綴(使用`--column`時)
```
match
```
匹配文本(與設置`matchContext`和`matchSelected`相同)
```
matchContext
```
匹配上下文行中的文本
```
matchSelected
```
匹配所選行中的文本
```
selected
```
選定行中不匹配的文本
```
separator
```
一行(`:`,`-`和`=`)之間以及之間的字段之間的分隔符(`--`)
```
color.interactive
```
設置為`always`時,始終使用顏色進行交互式提示和顯示(例如“git-add --interactive”和“git-clean --interactive”使用的顏色)。如果為假(或`never`),則永遠不會。設置為`true`或`auto`時,僅在輸出到終端時使用顏色。如果未設置,則使用`color.ui`的值(默認為`auto`)。
```
color.interactive.<slot>
```
使用自定義顏色 _git add --interactive_ 和 _git clean --interactive_ 輸出。 `<slot>`可以是`prompt`,`header`,`help`或`error`,用于交互式命令的四種不同類型的正常輸出。
```
color.pager
```
在尋呼機正在使用時啟用/禁用彩色輸出的布爾值(默認為true)。
```
color.push
```
用于啟用/禁用推送錯誤顏色的布爾值。可以設置為`always`,`false`(或`never`)或`auto`(或`true`),在這種情況下,顏色僅在錯誤輸出到達終端時使用。如果未設置,則使用`color.ui`的值(默認為`auto`)。
```
color.push.error
```
使用自定義顏色進行推送錯誤。
```
color.remote
```
如果設置,則突出顯示行開頭的關鍵字。關鍵字是“錯誤”,“警告”,“提示”和“成功”,并且不區分大小寫。可以設置為`always`,`false`(或`never`)或`auto`(或`true`)。如果未設置,則使用`color.ui`的值(默認為`auto`)。
```
color.remote.<slot>
```
為每個遠程關鍵字使用自定義顏色。 `<slot>`可以是與相應關鍵字匹配的`hint`,`warning`,`success`或`error`。
```
color.showBranch
```
在 [git-show-branch [1]](https://git-scm.com/docs/git-show-branch) 的輸出中啟用/禁用顏色的布爾值。可以設置為`always`,`false`(或`never`)或`auto`(或`true`),在這種情況下,顏色僅在輸出到終端時使用。如果未設置,則使用`color.ui`的值(默認為`auto`)。
```
color.status
```
在 [git-status [1]](https://git-scm.com/docs/git-status) 的輸出中啟用/禁用顏色的布爾值。可以設置為`always`,`false`(或`never`)或`auto`(或`true`),在這種情況下,顏色僅在輸出到終端時使用。如果未設置,則使用`color.ui`的值(默認為`auto`)。
```
color.status.<slot>
```
使用自定義顏色進行狀態著色。 `<slot>`是`header`(狀態消息的標題文本),`added`或`updated`(已添加但未提交的文件)之一,`changed`(已更改但未添加到索引中的文件) ),`untracked`(未被Git跟蹤的文件),`branch`(當前分支),`nobranch`(顯示_無分支_警告的顏色,默認為紅色),`localBranch`或`remoteBranch`(分支和跟蹤信息以狀態短格式顯示時的本地和遠程分支名稱)或`unmerged`(具有未更改的更改的文件)。
```
color.transport
```
拒絕推送時啟用/禁用顏色的布爾值。可以設置為`always`,`false`(或`never`)或`auto`(或`true`),在這種情況下,顏色僅在錯誤輸出到達終端時使用。如果未設置,則使用`color.ui`的值(默認為`auto`)。
```
color.transport.rejected
```
推送被拒絕時使用自定義顏色。
```
color.ui
```
此變量確定控制每個命令族顏色使用的變量(如`color.diff`和`color.grep`)的默認值。隨著更多命令學習配置以設置`--color`選項的默認值,其范圍將擴展。如果您希望Git命令不使用顏色,則將其設置為`false`或`never`,除非使用其他配置或`--color`選項明確啟用。如果您希望所有不是用于機器消耗的輸出使用顏色,將其設置為`always`,如果您希望此類輸出在寫入時使用顏色,則將其設置為`true`或`auto`(這是Git 1.8.4以來的默認設置)終點站。
```
column.ui
```
指定是否應在列中輸出支持的命令。此變量由以空格或逗號分隔的標記列表組成:
這些選項控制何時啟用該功能(默認為 _never_ ):
```
always
```
總是顯示在列中
```
never
```
從不在列中顯示
```
auto
```
如果輸出到終端,則顯示在列中
這些選項控制布局(默認為 _列_)。如果 _always_,_never_ 或 _auto_,則設置任何這些意味著 _always_。
```
column
```
在行之前填充列
```
row
```
在列之前填充行
```
plain
```
顯示在一列中
最后,這些選項可以與布局選項結合使用(默認為 _nodense_ ):
```
dense
```
使不等大小的列使用更多空間
```
nodense
```
制作相同大小的列
```
column.branch
```
指定是否在列中的`git branch`中輸出分支列表。有關詳細信息,請參閱`column.ui`。
```
column.clean
```
在`git clean -i`中列出項目時指定布局,它始終以列顯示文件和目錄。有關詳細信息,請參閱`column.ui`。
```
column.status
```
指定是否在列中的`git status`中輸出未跟蹤的文件。有關詳細信息,請參閱`column.ui`。
```
column.tag
```
指定是否在列中的`git tag`中輸出標簽列表。有關詳細信息,請參閱`column.ui`。
```
commit.cleanup
```
此設置將覆蓋`git commit`中`--cleanup`選項的默認值。有關詳細信息,請參閱 [git-commit [1]](https://git-scm.com/docs/git-commit) 。當您總是希望在日志消息中保留以注釋字符`#`開頭的行時,更改默認值會很有用,在這種情況下您將執行`git config commit.cleanup whitespace`(請注意,您必須刪除在提交日志模板中以`#`開頭的幫助行,如果你這樣做)。
```
commit.gpgSign
```
一個布爾值,用于指定是否所有提交都應進行GPG簽名。在執行諸如rebase之類的操作時使用此選項可能會導致大量提交被簽名。使用代理可能很方便避免多次輸入GPG密碼。
```
commit.status
```
一個布爾值,用于在使用編輯器準備提交消息時啟用/禁用提交消息模板中的狀態信息。默認為true。
```
commit.template
```
指定要用作新提交消息模板的文件的路徑名。
```
commit.verbose
```
boolean或int,用`git commit`指定詳細級別。參見 [git-commit [1]](https://git-scm.com/docs/git-commit) 。
```
credential.helper
```
指定在需要用戶名或密碼憑據時要調用的外部幫助程序;幫助程序可以咨詢外部存儲,以避免提示用戶輸入憑據。請注意,可以定義多個幫助程序。有關詳細信息,請參閱 [gitcredentials [7]](https://git-scm.com/docs/gitcredentials) 。
```
credential.useHttpPath
```
獲取憑據時,請考慮http或https URL的“路徑”組件。默認為false。有關詳細信息,請參閱 [gitcredentials [7]](https://git-scm.com/docs/gitcredentials) 。
```
credential.username
```
如果沒有為網絡身份驗證設置用戶名,則默認使用此用戶名。請參閱憑證。<context>.*以及 [gitcredentials [7]](https://git-scm.com/docs/gitcredentials) 。
```
credential.<url>.*
```
上面的任何憑證。*選項都可以有選擇地應用于某些憑據。例如,“credential.https://example.com.username”將僅為https與example.com的連接設置默認用戶名。有關如何匹配URL的詳細信息,請參閱 [gitcredentials [7]](https://git-scm.com/docs/gitcredentials) 。
```
credentialCache.ignoreSIGHUP
```
告訴git-credential-cache-daemon忽略SIGHUP,而不是退出。
```
completion.commands
```
這僅由git-completion.bash用于在已完成命令列表中添加或刪除命令。通常只完成瓷器命令和一些選擇其他命令。您可以在此變量中添加更多以空格分隔的命令。使用 _-_ 對命令進行前綴將從現有列表中刪除它。
```
diff.autoRefreshIndex
```
使用 _git diff_ 與工作樹文件進行比較時,不要將僅限統計更改視為已更改。而是靜默運行`git update-index --refresh`以更新工作樹中的內容與索引中的內容匹配的路徑的緩存統計信息。此選項默認為true。請注意,這僅影響 _git diff_ Porcelain,而不影響 _git diff-files_ 等低級 _diff_ 命令。
```
diff.dirstat
```
逗號分隔的`--dirstat`參數列表,指定 [git-diff [1]](https://git-scm.com/docs/git-diff) 和朋友的`--dirstat`選項的默認行為。可以在命令行上覆蓋默認值(使用`--dirstat=<param1,param2,...>`)。回退默認值(當`diff.dirstat`未更改時)為`changes,noncumulative,3`。可以使用以下參數:
```
changes
```
通過計算已從源中刪除或添加到目標的行來計算dirstat數。這忽略了文件中純代碼移動的數量。換句話說,重新排列文件中的行不會像其他更改那樣計算。這是沒有給出參數時的默認行為。
```
lines
```
通過執行常規的基于行的差異分析來計算dirstat數字,并對移除/添加的行數進行求和。(對于二進制文件,計算64字節塊,因為二進制文件沒有自然的線條概念)。這是比`changes`行為更昂貴的`--dirstat`行為,但它確實計算文件中重新排列的行與其他更改一樣多。結果輸出與您從其他`--*stat`選項獲得的輸出一致。
```
files
```
通過計算更改的文件數來計算dirstat數。在dirstat分析中,每個更改的文件都相同。這是計算上最便宜的`--dirstat`行為,因為它根本不需要查看文件內容。
```
cumulative
```
計算父目錄的子目錄中的更改。請注意,使用`cumulative`時,報告的百分比總和可能超過100%。可以使用`noncumulative`參數指定默認(非累積)行為。
```
<limit>
```
整數參數指定截止百分比(默認為3%)。貢獻低于此百分比變化的目錄不會顯示在輸出中。
示例:以下將計算已更改的文件,同時忽略少于已更改文件總量的10%的目錄,并在父目錄中累計子目錄計數:`files,10,cumulative`。
```
diff.statGraphWidth
```
在--stat輸出中限制圖形部分的寬度。如果設置,則適用于除format-patch之外的所有生成--stat輸出的命令。
```
diff.context
```
用<n>生成差異。上下文行而不是默認值3。此值可由-U選項覆蓋。
```
diff.interHunkContext
```
顯示差異之間的上下文,直到指定的行數,從而融合彼此接近的行。此值用作`--inter-hunk-context`命令行選項的默認值。
```
diff.external
```
如果設置了此配置變量,則不使用內部diff機器執行diff生成,而是使用給定命令。可以使用'GIT_EXTERNAL_DIFF'環境變量覆蓋。使用 [git [1]](https://git-scm.com/docs/git) 中“git Diffs”下所述的參數調用該命令。注意:如果您只想在文件的子集上使用外部差異程序,則可能需要使用 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
diff.ignoreSubmodules
```
設置--ignore-submodules的默認值。請注意,這僅影響 _git diff_ Porcelain,而不影響 _git diff-files_ 等低級 _diff_ 命令。 _git checkout_ 在報告未提交的更改時也會尊重此設置。設置為 _所有_ 禁用 _git commit_ 和 _git status_ 通常顯示的子模塊摘要,當設置`status.submoduleSummary`時除非使用--ignore覆蓋它-submodules命令行選項。 _git子模塊_ 命令不受此設置的影響。
```
diff.mnemonicPrefix
```
如果設置, _git diff_ 使用的前綴對與標準“a/”和“b/”不同,具體取決于所比較的內容。當此配置生效時,反向差異輸出也會交換前綴的順序:
```
git diff
```
比較索引和工作樹;
```
git diff HEAD
```
比較提交和工作樹;
```
git diff --cached
```
比較commit和index;
```
git diff HEAD:file1 file2
```
比較對象和工作樹實體;
```
git diff --no-index a b
```
比較兩個非git的東西(1)和(2)。
```
diff.noprefix
```
如果設置, _git diff_ 不顯示任何源或目標前綴。
```
diff.orderFile
```
指示如何在差異中訂購文件的文件。有關詳細信息,請參閱 [-](https://git-scm.com/docs/git-diff) [git-diff [1]](https://git-scm.com/docs/git-diff) 的 _-O_ 選項。如果`diff.orderFile`是相對路徑名,則將其視為相對于工作樹頂部的相對路徑名。
```
diff.renameLimit
```
執行復制/重命名檢測時要考慮的文件數;相當于 _git diff_ 選項`-l`。如果關閉重命名檢測,此設置無效。
```
diff.renames
```
Git是否以及如何檢測重命名。如果設置為“false”,則禁用重命名檢測。如果設置為“true”,則啟用基本重命名檢測。如果設置為“copies”或“copy”,Git也會檢測副本。默認為true。請注意,這僅影響 _git diff_ Porcelain,如 [git-diff [1]](https://git-scm.com/docs/git-diff) 和 [git-log [1]](https://git-scm.com/docs/git-log) ,而不是[等低級命令] git-diff-files [1]](https://git-scm.com/docs/git-diff-files) 。
```
diff.suppressBlankEmpty
```
一個布爾值,用于禁止在每個空輸出行之前打印空格的標準行為。默認為false。
```
diff.submodule
```
指定顯示子模塊差異的格式。 “short”格式只顯示范圍開頭和結尾的提交名稱。 “log”格式列出 [git-submodule [1]](https://git-scm.com/docs/git-submodule) `summary`范圍內的提交。 “diff”格式顯示子模塊更改內容的內聯差異。默認為“short”。
```
diff.wordRegex
```
POSIX擴展正則表達式用于在執行逐字差異計算時確定什么是“單詞”。與正則表達式匹配的字符序列是“單詞”,所有其他字符都是**可忽略的**空格。
```
diff.<driver>.command
```
自定義diff驅動程序命令。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
diff.<driver>.xfuncname
```
diff驅動程序應該用來識別hunk標頭的正則表達式。也可以使用內置模式。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
diff.<driver>.binary
```
將此選項設置為true可使diff驅動程序將文件視為二進制文件。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
diff.<driver>.textconv
```
diff驅動程序應調用的命令,以生成文本轉換后的文件版本。轉換的結果用于生成人類可讀的差異。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
diff.<driver>.wordRegex
```
diff驅動程序用于拆分行中單詞的正則表達式。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
diff.<driver>.cachetextconv
```
將此選項設置為true可使diff驅動程序緩存文本轉換輸出。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
diff.tool
```
控制 [git-difftool [1]](https://git-scm.com/docs/git-difftool) 使用哪種diff工具。此變量將覆蓋`merge.tool`中配置的值。下面的列表顯示了有效的內置值。任何其他值都被視為自定義差異工具,并且需要定義相應的difftool.<tool>.cmd變量。
```
diff.guitool
```
當指定-g/-gui標志時,控制 [git-difftool [1]](https://git-scm.com/docs/git-difftool) 使用哪個diff工具。此變量將覆蓋`merge.guitool`中配置的值。下面的列表顯示了有效的內置值。任何其他值都被視為自定義差異工具,并且需要定義相應的difftool.<guitool>.cmd變量。
* araxis
* bc
* bc3
* codecompare
* deltawalker
* diffmerge
* diffuse
* ecmerge
* emerge
* examdiff
* guiffy
* gvimdiff
* gvimdiff2
* gvimdiff3
* kdiff3
* kompare
* meld
* 了opendiff
* p4merge
* tkdiff
* vimdiff
* vimdiff2
* vimdiff3
* winmerge
* xxdiff
```
diff.indentHeuristic
```
將此選項設置為`true`以啟用實驗啟發式算法,可以移動差異塊邊界以使補丁更易于閱讀。
```
diff.algorithm
```
選擇差異算法。變體如下:
```
default, myers
```
基本的貪心差異算法。目前,這是默認值。
```
minimal
```
花些額外的時間來確保產生盡可能小的差異。
```
patience
```
生成補丁時使用“耐心差異”算法。
```
histogram
```
該算法將耐心算法擴展為“支持低發生的共同元素”。
```
diff.wsErrorHighlight
```
突出顯示差異的`context`,`old`或`new`行中的空白錯誤。多個值用逗號分隔,`none`重置先前的值,`default`將列表重置為`new`,`all`是`old,new,context`的簡寫。空白錯誤用`color.diff.whitespace`著色。命令行選項`--ws-error-highlight=<kind>`會覆蓋此設置。
```
diff.colorMoved
```
如果設置為有效的`<mode>`或真值,則差異中的移動線的顏色會有所不同,有效模式的詳細信息請參見 _- [git-diff [1]中的[顏色移動](https://git-scm.com/docs/git-diff)_ 。如果只是設置為true,將使用默認顏色模式。設置為false時,移動的線條不會著色。
```
diff.colorMovedWS
```
當使用例如移動的線條著色時`diff.colorMoved`設置,此選項控制`<mode>`如何處理有效模式的詳細信息,請參閱 [git-diff [1]](https://git-scm.com/docs/git-diff) 中的 _--color-moved-ws_ 。
```
difftool.<tool>.path
```
覆蓋給定工具的路徑。如果您的工具不在PATH中,這非常有用。
```
difftool.<tool>.cmd
```
指定用于調用指定diff工具的命令。在shell中使用以下變量計算指定的命令: _LOCAL_ 設置為包含diff前映像內容的臨時文件的名稱, _REMOTE_ 設置為包含diff后映像內容的臨時文件的名稱。
```
difftool.prompt
```
在每次調用diff工具之前提示。
```
fastimport.unpackLimit
```
如果 [git-fast-import [1]](https://git-scm.com/docs/git-fast-import) 導入的對象數低于此限制,則對象將被解壓縮為松散的目標文件。但是,如果導入的對象數等于或超過此限制,則包將作為包存儲。從快速導入存儲包可以使導入操作更快完成,尤其是在慢速文件系統上。如果未設置,則使用`transfer.unpackLimit`的值。
```
fetch.recurseSubmodules
```
此選項可以設置為布爾值,也可以設置為 _on-demand_。將其設置為布爾值會將fetch和pull的行為更改為無條件地在設置為true時遞歸到子模塊或在設置為false時完全不遞歸。當設置為 _on-demand_(默認值)時,fetch和pull將僅在其超級項目檢索更新子模塊引用的提交時遞歸到填充的子模塊中。
```
fetch.fsckObjects
```
如果設置為true,git-fetch-pack將檢查所有獲取的對象。有關已檢查的內容,請參閱`transfer.fsckObjects`。默認為false。如果未設置,則使用`transfer.fsckObjects`的值。
```
fetch.fsck.<msg-id>
```
行為類似`fsck.<msg-id>`,但由 [git-fetch-pack [1]](https://git-scm.com/docs/git-fetch-pack) 代替 [git-fsck [1]](https://git-scm.com/docs/git-fsck) 使用。有關詳細信息,請參閱`fsck.<msg-id>`文檔。
```
fetch.fsck.skipList
```
行為類似`fsck.skipList`,但由 [git-fetch-pack [1]](https://git-scm.com/docs/git-fetch-pack) 代替 [git-fsck [1]](https://git-scm.com/docs/git-fsck) 使用。有關詳細信息,請參閱`fsck.skipList`文檔。
```
fetch.unpackLimit
```
如果通過Git本機傳輸獲取的對象數低于此限制,則對象將解壓縮為松散的對象文件。但是,如果接收到的對象的數量等于或超過此限制,則在添加任何丟失的delta基礎之后,接收的包將作為包存儲。從推送中存儲包可以使推送操作更快完成,尤其是在慢速文件系統上。如果未設置,則使用`transfer.unpackLimit`的值。
```
fetch.prune
```
如果為true,則fetch將自動表現為在命令行上給出`--prune`選項。另請參閱`remote.<name>.prune`和 [git-fetch [1]](https://git-scm.com/docs/git-fetch) 的PRUNING部分。
```
fetch.pruneTags
```
如果為true,則fetch將自動表現為修剪時提供`refs/tags/*:refs/tags/*` refspec,如果尚未設置的話。這允許設置此選項和`fetch.prune`以保持與上游引用的1 = 1映射。另請參見[HTD0] git-fetch [1] 的`remote.<name>.pruneTags`和PRUNING部分。
```
fetch.output
```
控制如何打印ref更新狀態。有效值為`full`和`compact`。默認值為`full`。有關詳細信息,請參見 [git-fetch [1]](https://git-scm.com/docs/git-fetch) 中的OUTPUT部分。
```
fetch.negotiationAlgorithm
```
控制在協商服務器發送的包文件的內容時如何發送有關本地存儲庫中的提交的信息。設置為“skipping”以使用跳過提交的算法以便更快地收斂,但可能導致大于必要的packfile;默認值為“default”,它指示Git使用從不跳過提交的默認算法(除非服務器已確認它或其后代之一)。未知值將導致 _git fetch_ 錯誤輸出。
另請參見 [git-fetch [1]](https://git-scm.com/docs/git-fetch) 的`--negotiation-tip`選項。
```
format.attach
```
啟用多部分/混合附件作為 _format-patch_ 的默認設置。該值也可以是雙引號字符串,它將啟用附件作為默認值,并將值設置為邊界。請參閱 [git-format-patch [1]](https://git-scm.com/docs/git-format-patch) 中的--attach選項。
```
format.from
```
提供格式化補丁的`--from`選項的默認值。接受布爾值,或名稱和電子郵件地址。如果為false,則format-patch默認為`--no-from`,直接在修補程序郵件的“發件人:”字段中使用提交作者。如果為true,則format-patch默認為`--from`,在補丁郵件的“From:”字段中使用您的提交者標識,如果不同,則在補丁郵件正文中包含“From:”字段。如果設置為非布爾值,則format-patch使用該值而不是您的提交者標識。默認為false。
```
format.numbered
```
一個布爾值,可以啟用或禁用補丁主題中的序列號。它默認為“auto”,僅當有多個補丁時啟用它。可以通過將所有消息設置為“true”或“false”來啟用或禁用它。請參見 [git-format-patch [1]](https://git-scm.com/docs/git-format-patch) 中的--numbered選項。
```
format.headers
```
要通過郵件提交的修補程序中包含的其他電子郵件標頭。見 [git-format-patch [1]](https://git-scm.com/docs/git-format-patch) 。
```
format.to
format.cc
```
其他收件人包含在通過郵件提交的補丁中。請參閱 [git-format-patch [1]](https://git-scm.com/docs/git-format-patch) 中的--to和--cc選項。
```
format.subjectPrefix
```
format-patch的默認設置是輸出帶有 _[PATCH]_ 主題前綴的文件。使用此變量更改該前綴。
```
format.signature
```
format-patch的默認設置是輸出包含Git版本號的簽名。使用此變量可更改該默認值。將此變量設置為空字符串(“”)以抑制簽名生成。
```
format.signatureFile
```
與format.signature類似,但此變量指定的文件內容將用作簽名。
```
format.suffix
```
format-patch的默認設置是輸出后綴為`.patch`的文件。使用此變量更改該后綴(如果需要,請確保包含點)。
```
format.pretty
```
log/show/whatchanged命令的默認漂亮格式,參見 [git-log [1]](https://git-scm.com/docs/git-log) , [git-show [1]](https://git-scm.com/docs/git-show) , [git -whatchanged [1]](https://git-scm.com/docs/git-whatchanged) 。
```
format.thread
```
_git format-patch_ 的默認線程樣式。可以是布爾值,也可以是`shallow`或`deep`。 `shallow`線程使每個郵件都回復到系列的頭部,其中頭部是從求職信,`--in-reply-to`和第一個補丁郵件中按順序選擇的。 `deep`線程使每封郵件都回復上一封郵件。 true布爾值與`shallow`相同,false值禁用線程。
```
format.signOff
```
一個布爾值,允許您默認啟用format-patch的`-s/--signoff`選項。 **注意:**將Signed-off-by:行添加到補丁應該是一種有意識的行為,這意味著您證明您有權在相同的開源許可下提交此作品。有關進一步的討論,請參閱 _SubmittingPatches_ 文檔。
```
format.coverLetter
```
一個布爾值,控制在調用format-patch時是否生成封面字母,但另外可以設置為“auto”,僅在有多個補丁時生成封面字母。
```
format.outputDirectory
```
設置自定義目錄以存儲生成的文件而不是當前工作目錄。
```
format.useAutoBase
```
一個布爾值,允許您默認啟用format-patch的`--base=auto`選項。
```
filter.<driver>.clean
```
用于在簽入時將工作樹文件的內容轉換為blob的命令。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
filter.<driver>.smudge
```
該命令用于在結帳時將blob對象的內容轉換為worktree文件。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
fsck.<msg-id>
```
在fsck期間,git可能會發現遺留數據的問題,這些問題不會被當前版本的git生成,如果設置了`transfer.fsckObjects`,則不會通過網絡發送。此功能旨在支持使用包含此類數據的舊存儲庫。
設置`fsck.<msg-id> `將由 [git-fsck [1]](https://git-scm.com/docs/git-fsck) 選取,但要接受推送此類數據集`receive.fsck.<msg-id> `,或者克隆或獲取它設置`fetch.fsck.<msg-id> `。
文檔的其余部分為了簡潔起見討論了`fsck.*`,但同樣適用于相應的`receive.fsck.*`和`fetch.<msg-id> .*`。變量。
與`color.ui`和`core.editor`等變量不同,`receive.fsck.<msg-id> `和`fetch.fsck.<msg-id> `變量如果未設置則不會回退到`fsck.<msg-id> `配置。要在不同情況下統一配置相同的fsck設置,所有這三個設置都必須設置為相同的值。
設置`fsck.<msg-id> `時,可以通過配置`fsck.<msg-id> `設置將錯誤切換為警告,反之亦然,其中`<msg-id> `是fsck消息ID,值為`error`,`warn`或`ignore`之一。為方便起見,fsck使用消息ID作為錯誤/警告的前綴,例如: “missingEmail:無效的作者/提交者行 - 缺少電子郵件”意味著設置`fsck.missingEmail = ignore`將隱藏該問題。
+ 一般來說,最好枚舉`fsck.skipList`存在問題的現有對象,而不是列出這些有問題的對象共享被忽略的破壞類型,因為后者將允許忽略相同破壞的新實例。
+ 設置未知`fsck.<msg-id> `值將導致fsck死亡,但對`receive.fsck.<msg-id> `和`fetch.fsck.<msg-id> `執行相同操作只會導致git發出警告。
```
fsck.skipList
```
指向已知以非致命方式破壞的對象名稱列表(即每行一個未縮寫的SHA-1)的路徑,應該被忽略。在Git 2.20和更高版本的注釋(_#_)的版本中,空行以及任何前導和尾隨空格都將被忽略。除了每行SHA-1之外的所有內容都會在舊版本上出錯。
盡管早期提交包含可以安全忽略的錯誤(例如無效的提交者電子郵件地址),但應該接受已建立的項目時此功能非常有用。注意:使用此設置無法跳過損壞的對象。
與`fsck.<msg-id> `類似,此變量具有相應的`receive.fsck.skipList`和`fetch.fsck.skipList`變體。
與`color.ui`和`core.editor`等變量不同,`receive.fsck.skipList`和`fetch.fsck.skipList`變量如果未設置則不會回退到`fsck.skipList`配置。要在不同情況下統一配置相同的fsck設置,所有這三個設置都必須設置為相同的值。
舊版本的Git(2.20之前)記錄了對象名稱列表應該排序。這絕不是必需的,對象名稱可以按任何順序出現,但是在讀取列表時,我們跟蹤列表是否為了內部二進制搜索實現的目的而排序,這可以使用已排序的列表保存自己的一些工作。除非你有一個龐大的列表,否則你沒有理由不去預先對列表進行排序。在Git版本2.20之后使用哈希實現,因此現在沒有理由對列表進行預排序。
```
gc.aggressiveDepth
```
_git gc -aggressive_ 使用的delta壓縮算法中使用的深度參數。默認為50。
```
gc.aggressiveWindow
```
_git gc -aggressive_ 使用的delta壓縮算法中使用的窗口大小參數。默認為250。
```
gc.auto
```
當存儲庫中存在大約多個松散對象時,`git gc --auto`將打包它們。一些Porcelain命令使用此命令不時執行輕量級垃圾收集。默認值為6700。將此值設置為0將禁用它。
```
gc.autoPackLimit
```
當存儲庫中沒有標記`*.keep`文件的多個包時,`git gc --auto`會將它們合并為一個更大的包。默認值為50。將此值設置為0將禁用它。
```
gc.autoDetach
```
如果系統支持,則立即返回`git gc --auto`并在后臺運行。默認為true。
```
gc.bigPackThreshold
```
如果非零,則在運行`git gc`時保留所有大于此限制的包。這與`--keep-base-pack`非常相似,只是保留了滿足閾值的所有包,而不僅僅是基本包。默認為零。支持 _k_ , _m_ 或 _g_ 的通用單位后綴。
請注意,如果保留包的數量大于gc.autoPackLimit,則忽略此配置變量,將重新打包除基本包之外的所有包。在此之后,包的數量應該低于gc.autoPackLimit,并且應該再次遵守gc.bigPackThreshold。
```
gc.writeCommitGraph
```
如果為true,那么當 [git-gc [1]](https://git-scm.com/docs/git-gc) 運行時,gc將重寫提交圖文件。當使用 [git-gc [1]](https://git-scm.com/docs/git-gc) _--auto_ 時,如果需要內務處理,則會更新提交圖。默認值為false。有關詳細信息,請參閱 [git-commit-graph [1]](https://git-scm.com/docs/git-commit-graph)。
```
gc.logExpiry
```
如果文件gc.log存在,那么`git gc --auto`將打印其內容并退出狀態為零而不是運行,除非該文件超過 _gc.logExpiry_ old。默認為“1.day”。有關指定其值的更多方法,請參見`gc.pruneExpire`。
```
gc.packRefs
```
在存儲庫中運行`git pack-refs`會使其在1.5.1.2之前的Git版本上通過HTTP等啞傳輸不可克隆。此變量確定 _git gc_ 是否運行`git pack-refs`。這可以設置為`notbare`以在所有非裸存儲庫中啟用它,或者可以將其設置為布爾值。默認值為`true`。
```
gc.pruneExpire
```
當 _git gc_ 運行時,它將調用 _prune --expire 2.weeks.ago_ 。使用此配置變量覆蓋寬限期。值“now”可用于禁用此寬限期并始終立即修剪不可到達的對象,或者“never”可用于抑制修剪。當 _git gc_ 與寫入存儲庫的另一個進程同時運行時,此功能有助于防止損壞;請參閱 [git-gc [1]](https://git-scm.com/docs/git-gc) 的“注意”部分。
```
gc.worktreePruneExpire
```
當 _git gc_ 運行時,它調用 _git worktree prune --expire 3.months.ago_ 。此配置變量可用于設置不同的寬限期。值“now”可以用于禁用寬限期并立即修剪`$GIT_DIR/worktrees`,或者“never”可以用于抑制修剪。
```
gc.reflogExpire
```
```
gc.<pattern>.reflogExpire
```
_git reflog expire_ 刪除比此時更早的reflog條目;默認為90天。值“now”立即使所有條目到期,并且“never”完全抑制到期。使用“<pattern>” (例如“refs/stash”)設置中間僅適用于與<pattern>匹配的引用。
```
gc.reflogExpireUnreachable
```
```
gc.<pattern>.reflogExpireUnreachable
```
_git reflog expire_ 刪除比此時更早的reflog條目,并且無法從當前提示訪問;默認為30天。值“now”立即使所有條目到期,并且“never”完全抑制到期。使用“<pattern>” (例如,“refs/stash”)在中間,該設置僅適用于與<pattern>匹配的引用。
```
gc.rerereResolved
```
當 _git rerere gc_ 運行時,您之前解決的沖突合并的記錄將保留這么多天。您還可以使用更易讀的“1.month.ago”等。默認值為60天。見 [git-rerere [1]](https://git-scm.com/docs/git-rerere) 。
```
gc.rerereUnresolved
```
當 _git rerere gc_ 運行時,您未解決的沖突合并的記錄將保留這么多天。您還可以使用更易讀的“1.month.ago”等。默認值為15天。見 [git-rerere [1]](https://git-scm.com/docs/git-rerere) 。
```
gitcvs.commitMsgAnnotation
```
將此字符串附加到每個提交消息。設置為空字符串以禁用此功能。默認為“via git-CVS emulator”。
```
gitcvs.enabled
```
是否為此存儲庫啟用了CVS服務器接口。參見 [git-cvsserver [1]](https://git-scm.com/docs/git-cvsserver) 。
```
gitcvs.logFile
```
CVS服務器接口良好的日志文件的路徑...記錄各種東西。參見 [git-cvsserver [1]](https://git-scm.com/docs/git-cvsserver) 。
```
gitcvs.usecrlfattr
```
如果為true,服務器將查找文件的行尾轉換屬性以確定要使用的`-k`模式。如果屬性強制Git將文件視為文本,則`-k`模式將保留為空,因此CVS客戶端會將其視為文本。如果它們禁止文本轉換,則將使用 _-kb_ 模式設置該文件,該模式將抑制客戶端可能執行的任何換行。如果屬性不允許確定文件類型,則使用`gitcvs.allBinary`。參見 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
gitcvs.allBinary
```
如果`gitcvs.usecrlfattr`無法解析要使用的正確 _-kb_ 模式,則使用此選項。如果為true,則所有未解析的文件將以模式 _-kb_ 發送到客戶端。這會導致客戶端將它們視為二進制文件,這會抑制任何換行,否則可能會執行此操作。或者,如果將其設置為“guess”,則檢查文件的內容以確定它是否為二進制,類似于`core.autocrlf`。
```
gitcvs.dbName
```
git-cvsserver用于緩存從Git存儲庫派生的修訂信息的數據庫。確切的含義取決于使用的數據庫驅動程序,對于SQLite(這是默認驅動程序),這是一個文件名。支持變量替換(詳見 [git-cvsserver [1]](https://git-scm.com/docs/git-cvsserver) )。不得包含分號(`;`)。默認值:_%Ggitcvs。%m.sqlite_
```
gitcvs.dbDriver
```
使用Perl DBI驅動程序。您可以在此處為此指定任何可用的驅動程序,但它可能不起作用。 git-cvsserver使用 _DBD :: SQLite_ 進行測試,報告與 _DBD :: Pg_ 一起使用,報告**不是**與 _DBD一起使用:: mysql_ 。實驗功能。可能不包含雙冒號(`:`)。默認值: _SQLite_ 。參見 [git-cvsserver [1]](https://git-scm.com/docs/git-cvsserver) 。
```
gitcvs.dbUser, gitcvs.dbPass
```
數據庫用戶和密碼。僅在設置`gitcvs.dbDriver`時有用,因為SQLite沒有數據庫用戶和/或密碼的概念。 _gitcvs.dbUser_ 支持變量替換(詳見 [git-cvsserver [1]](https://git-scm.com/docs/git-cvsserver) )。
```
gitcvs.dbTableNamePrefix
```
數據庫表名稱前綴。在所使用的任何數據庫表的名稱前面,允許將單個數據庫用于多個存儲庫。支持變量替換(詳見 [git-cvsserver [1]](https://git-scm.com/docs/git-cvsserver) )。任何非字母字符都將替換為下劃線。
除`gitcvs.usecrlfattr`和`gitcvs.allBinary`之外的所有gitcvs變量也可以指定為 _gitcvs。<access_method>。<varname>_ (其中 _access_method_ 是“ext”和“pserver”之一)使它們僅適用于給定的訪問方法。
```
gitweb.category
```
```
gitweb.description
```
```
gitweb.owner
```
```
gitweb.url
```
有關說明,請參見 [gitweb [1]](https://git-scm.com/docs/gitweb) 。
```
gitweb.avatar
```
```
gitweb.blame
```
```
gitweb.grep
```
```
gitweb.highlight
```
```
gitweb.patches
```
```
gitweb.pickaxe
```
```
gitweb.remote_heads
```
```
gitweb.showSizes
```
```
gitweb.snapshot
```
有關說明,請參見 [gitweb.conf [5]](https://git-scm.com/docs/gitweb.conf) 。
```
grep.lineNumber
```
如果設置為true,則默認啟用`-n`選項。
```
grep.column
```
如果設置為true,則默認啟用`--column`選項。
```
grep.patternType
```
設置默認匹配行為。使用 _basic_ ,_extended_,_fixed_ 或 _perl_ 的值將啟用`--basic-regexp`,`--extended-regexp`,`--fixed-strings` ,或`--perl-regexp`選項相應,而值 _default_ 將返回默認匹配行為。
```
grep.extendedRegexp
```
如果設置為true,則默認啟用`--extended-regexp`選項。當`grep.patternType`選項設置為 _default_ 以外的值時,將忽略此選項。
```
grep.threads
```
要使用的grep工作線程數。有關詳細信息,請參閱 [git-grep [1]](https://git-scm.com/docs/git-grep) 中的`grep.threads`。
```
grep.fallbackToNoIndex
```
如果設置為true,如果git grep在git存儲庫之外執行,則回退到git grep --no-index。默認為false。
```
gpg.program
```
在制作或驗證PGP簽名時,使用此自定義程序而不是`$PATH`上的“`gpg`”。程序必須支持與GPG相同的命令行界面,即驗證分離的簽名,運行“`gpg --verify $file - <$signature`”,并且程序預期通過退出代碼0發出良好的簽名,并生成ASCII -armored分離簽名,“`gpg -bsau $key`”的標準輸入被輸入要簽名的內容,并且程序應該將結果發送到其標準輸出。
```
gpg.format
```
指定使用`--gpg-sign`進行簽名時要使用的密鑰格式。默認值為“openpgp”,另一個可能的值為“x509”。
```
gpg.<format>.program
```
使用此選項可自定義用于所選簽名格式的程序。(參見`gpg.program`和`gpg.format`)`gpg.program`仍可用作`gpg.openpgp.program`的遺留同義詞。`gpg.x509.program`的默認值為“gpgsm”。
```
gui.commitMsgWidth
```
定義 [git-gui [1]](https://git-scm.com/docs/git-gui) 中提交消息窗口的寬度。 “75”是默認值。
```
gui.diffContext
```
指定 [git-gui [1]](https://git-scm.com/docs/git-gui) 對diff進行調用時應使用的上下文行數。默認值為“5”。
```
gui.displayUntracked
```
確定 [git-gui [1]](https://git-scm.com/docs/git-gui) 是否顯示文件列表中未跟蹤的文件。默認值為“true”。
```
gui.encoding
```
指定用于在 [git-gui [1]](https://git-scm.com/docs/git-gui) 和 [gitk [1]](https://git-scm.com/docs/gitk) 中顯示文件內容的默認編碼。可以通過為相關文件設置 _encoding_ 屬性來覆蓋它(參見 [gitattributes [5]](https://git-scm.com/docs/gitattributes) )。如果未設置此選項,則工具默認為區域設置編碼。
```
gui.matchTrackingBranch
```
確定使用 [git-gui [1]](https://git-scm.com/docs/git-gui) 創建的新分支是否應默認跟蹤具有匹配名稱的遠程分支。默認值:“false”。
```
gui.newBranchTemplate
```
在使用 [git-gui [1]](https://git-scm.com/docs/git-gui) 創建新分支時用作建議名稱。
```
gui.pruneDuringFetch
```
如果 [git-gui [1]](https://git-scm.com/docs/git-gui) 在執行提取時應修剪遠程跟蹤分支,則為“true”。默認值為“false”。
```
gui.trustmtime
```
確定 [git-gui [1]](https://git-scm.com/docs/git-gui) 是否應該信任文件修改時間戳。默認情況下,時間戳不受信任。
```
gui.spellingDictionary
```
指定 [git-gui [1]](https://git-scm.com/docs/git-gui) 中用于拼寫檢查提交消息的字典。設置為“none”時,拼寫檢查將關閉。
```
gui.fastCopyBlame
```
如果為真, _git gui blame_ 使用`-C`而不是`-C -C`進行原始位置檢測。它使大型存儲庫的責任明顯加快,但代價是不太徹底的復制檢測。
```
gui.copyBlameThreshold
```
指定在 _git gui blame_ 原始位置檢測中使用的閾值,以字母數字字符測量。有關復制檢測的更多信息,請參閱 [git-blame [1]](https://git-scm.com/docs/git-blame) 手冊。
```
gui.blamehistoryctx
```
當從 _git gui blame_ 調用`Show History Context`菜單項時,指定在 [gitk [1]](https://git-scm.com/docs/gitk) 中為所選提交顯示的歷史上下文的半徑。如果此變量設置為零,則顯示整個歷史記錄。
```
guitool.<name>.cmd
```
指定在調用 [git-gui [1]](https://git-scm.com/docs/git-gui) `Tools`菜單的相應項時要執行的shell命令行。每個工具都必須使用此選項。該命令從工作目錄的根目錄執行,并在環境中接收工具名稱`GIT_GUITOOL`,當前所選文件的名稱為 _FILENAME_ ,以及當前名稱分支為 _CUR_BRANCH_ (如果頭被分離, _CUR_BRANCH_ 為空)。
```
guitool.<name>.needsFile
```
僅當在GUI中選擇了差異時才運行該工具。它保證 _FILENAME_ 不為空。
```
guitool.<name>.noConsole
```
以靜默方式運行命令,而不創建窗口以顯示其輸出。
```
guitool.<name>.noRescan
```
工具完成執行后,請勿重新掃描工作目錄以進行更改。
```
guitool.<name>.confirm
```
在實際運行該工具之前顯示確認對話框。
```
guitool.<name>.argPrompt
```
從用戶請求字符串參數,并通過`ARGS`環境變量將其傳遞給工具。由于請求參數意味著確認,如果啟用此選項,_確認_選項無效。如果該選項設置為 _true_ , _yes_ 或 _1_ ,則對話框使用內置的通用提示;否則使用變量的確切值。
```
guitool.<name>.revPrompt
```
從用戶請求單個有效修訂,并設置`REVISION`環境變量。在其他方面,該選項類似于 _argPrompt_ ,可以與它一起使用。
```
guitool.<name>.revUnmerged
```
在 _revPrompt_ 子菜單中僅顯示未合并的分支。這對于類似于merge或rebase的工具很有用,但對于checkout或reset之類的東西卻沒有用。
```
guitool.<name>.title
```
指定用于提示對話框的標題。默認值為工具名稱。
```
guitool.<name>.prompt
```
指定在 _argPrompt_ 和 _revPrompt_ 的子部分之前顯示在對話框頂部的常規提示字符串。默認值包括實際命令。
```
help.browser
```
指定將用于以 _web_ 格式顯示幫助的瀏覽器。參見 [git-help [1]](https://git-scm.com/docs/git-help) 。
```
help.format
```
覆蓋 [git-help [1]](https://git-scm.com/docs/git-help) 使用的默認幫助格式。支持值 _man_ , _info_ , _web_ 和 _html_ 。 _man_ 是默認值。 _web_ 和 _html_ 是一樣的。
```
help.autoCorrect
```
等待給定的十分之一秒(0.1秒)后自動糾正并執行錯誤的命令。如果可以從輸入的文本中推導出多個命令,則不會執行任何操作。如果此選項的值為負,則將立即執行更正的命令。如果值為0 - 將僅顯示命令但不執行。這是默認值。
```
help.htmlPath
```
指定HTML文檔所在的路徑。支持文件系統路徑和URL。當幫助以 _web_ 格式顯示時,HTML頁面將以此路徑為前綴。這默認為Git安裝的文檔路徑。
```
http.proxy
```
覆蓋HTTP代理,通常使用 _http_proxy_ , _https_proxy_ 和 _all_proxy_ 環境變量配置(參見`curl(1)`)。除了curl理解的語法之外,還可以指定具有用戶名但沒有密碼的代理字符串,在這種情況下,git將嘗試以與其他憑據相同的方式獲取一個代理字符串。有關詳細信息,請參閱 [gitcredentials [7]](https://git-scm.com/docs/gitcredentials) 。因此語法是 _[protocol://] [user [:password] @] proxyhost [:port]_ 。這可以在每個遠程基礎上被覆蓋;見遠程。<name>.proxy
```
http.proxyAuthMethod
```
設置用于針對HTTP代理進行身份驗證的方法。僅當配置的代理字符串包含用戶名部分(即 _user @ host_ 或 _user @ host:port_ )時才會生效。這可以在每個遠程基礎上被覆蓋;見`remote.<name>.proxyAuthMethod`。兩者都可以被`GIT_HTTP_PROXY_AUTHMETHOD`環境變量覆蓋。可能的值是:
* `anyauth` - 自動選擇合適的身份驗證方法。假設代理使用407狀態代碼和一個或多個具有支持的身份驗證方法的代理身份驗證頭來應答未經身份驗證的請求。這是默認值。
* `basic` - HTTP基本身份驗證
* `digest` - HTTP摘要認證;這可以防止密碼以明文形式傳輸到代理
* `negotiate` - GSS-協商認證(比較`curl(1)`的--negotiate選項)
* `ntlm` - NTLM身份驗證(比較`curl(1)`的--ntlm選項)
```
http.emptyAuth
```
在不尋求用戶名或密碼的情況下嘗試身份驗證。這可以用于嘗試GSS-Negotiate身份驗證而無需在URL中指定用戶名,因為libcurl通常需要用戶名進行身份驗證。
```
http.delegation
```
控制GSSAPI憑證委派。默認情況下,自版本7.21.7以來,libcurl中的委派被禁用。設置參數以告知服務器在用戶憑據時允許委派的內容。與GSS/kerberos一起使用。可能的值是:
* `none` - 不允許任何授權。
* `policy` - 當且僅當在Kerberos服務票證中設置了OK-AS-DELEGATE標志時才委派,這是領域政策的問題。
* `always` - 無條件地允許服務器委派。
```
http.extraHeader
```
與服務器通信時傳遞其他HTTP標頭。如果存在多個此類條目,則將所有條目添加為額外標頭。要允許覆蓋從系統配置繼承的設置,空值會將額外標頭重置為空列表。
```
http.cookieFile
```
包含先前存儲的cookie行的文件的路徑名,如果它們與服務器匹配,則應在Git http會話中使用。從中讀取cookie的文件的文件格式應該是純HTTP標頭或Netscape/Mozilla cookie文件格式(參見`curl(1)`)。請注意,除非設置了http.saveCookies,否則使用http.cookieFile指定的文件僅用作輸入。
```
http.saveCookies
```
如果設置,請將請求期間收到的cookie存儲到http.cookieFile指定的文件中。如果未設置http.cookieFile,則無效。
```
http.version
```
與服務器通信時使用指定的HTTP協議版本。如果要強制使用默認值。可用和默認版本取決于libcurl。實際上,此選項的可能值為:
* HTTP / 2
* HTTP / 1.1
```
http.sslVersion
```
如果要強制使用默認值,則在協商SSL連接時使用的SSL版本。可用和默認版本取決于libcurl是針對NSS還是OpenSSL構建的,以及正在使用的加密庫的特定配置。在內部設置 _CURLOPT_SSL_VERSION_ 選項;有關此選項的格式以及支持的ssl版本的更多詳細信息,請參閱libcurl文檔。實際上,此選項的可能值為:
* SSLV2
* SSLV3
* 使用TLSv1
* tlsv1.0
* tlsv1.1
* TLSv1.2工作
* tlsv1.3
可以被`GIT_SSL_VERSION`環境變量覆蓋。要強制git使用libcurl的默認ssl版本并忽略任何顯式的http.sslversion選項,請將`GIT_SSL_VERSION`設置為空字符串。
```
http.sslCipherList
```
協商SSL連接時使用的SSL密碼列表。可用的密碼取決于libcurl是針對NSS還是OpenSSL構建的,以及正在使用的加密庫的特定配置。在內部設置 _CURLOPT_SSL_CIPHER_LIST_ 選項;有關此列表格式的更多詳細信息,請參閱libcurl文檔。
可以被`GIT_SSL_CIPHER_LIST`環境變量覆蓋。要強制git使用libcurl的默認密碼列表并忽略任何顯式的http.sslCipherList選項,請將`GIT_SSL_CIPHER_LIST`設置為空字符串。
```
http.sslVerify
```
獲取或推送HTTPS時是否驗證SSL證書。默認為true。可以被`GIT_SSL_NO_VERIFY`環境變量覆蓋。
```
http.sslCert
```
獲取或推送HTTPS時包含SSL證書的文件。可以被`GIT_SSL_CERT`環境變量覆蓋。
```
http.sslKey
```
獲取或推送HTTPS時包含SSL私鑰的文件。可以被`GIT_SSL_KEY`環境變量覆蓋。
```
http.sslCertPasswordProtected
```
為SSL證書啟用Git密碼提示。否則,如果證書或私鑰被加密,OpenSSL可能會多次提示用戶。可以被`GIT_SSL_CERT_PASSWORD_PROTECTED`環境變量覆蓋。
```
http.sslCAInfo
```
包含證書的文件,用于在獲取或推送HTTPS時驗證對等方。可以被`GIT_SSL_CAINFO`環境變量覆蓋。
```
http.sslCAPath
```
包含帶有CA證書的文件的路徑,用于在獲取或推送HTTPS時驗證對等方。可以被`GIT_SSL_CAPATH`環境變量覆蓋。
```
http.sslBackend
```
要使用的SSL后端的名稱(例如“openssl”或“schannel”)。如果cURL缺乏在運行時選擇SSL后端的支持,則忽略此選項。
```
http.schannelCheckRevoke
```
用于在http.sslBackend設置為“schannel”時強制執行或禁用cURL中的證書吊銷檢查。如果未設置,則默認為`true`。只有在Git始終出錯并且消息是關于檢查證書的撤銷狀態時才需要禁用此功能。如果cURL缺少在運行時設置相關SSL選項的支持,則忽略此選項。
```
http.schannelUseSSLCAInfo
```
從cURL v7.60.0開始,安全通道后端可以使用通過`http.sslCAInfo`提供的證書包,但這會覆蓋Windows證書存儲區。由于默認情況下不需要這樣做,因此當`schannel`后端通過`http.sslBackend`配置時,Git會告訴cURL默認不使用該捆綁包,除非`http.schannelUseSSLCAInfo`覆蓋此行為。
```
http.pinnedpubkey
```
https服務的公鑰。它可以是PEM或DER編碼的公鑰文件的文件名,也可以是以 _sha256 //_ 開頭的字符串,后跟公鑰的base64編碼sha256哈希。另請參見libcurl _CURLOPT_PINNEDPUBLICKEY_ 。如果設置了此選項但cURL不支持,則git將退出并顯示錯誤。
```
http.sslTry
```
通過常規FTP協議連接時,嘗試使用AUTH SSL / TLS和加密數據傳輸。如果FTP服務器出于安全原因需要它,或者您希望在遠程FTP服務器支持時安全地連接,則可能需要這樣做。默認值為false,因為它可能會在配置錯誤的服務器上觸發證書驗證錯誤。
```
http.maxRequests
```
并行啟動多少HTTP請求。可以被`GIT_HTTP_MAX_REQUESTS`環境變量覆蓋。默認值為5。
```
http.minSessions
```
在請求之間保留的卷曲會話數(跨插槽計數)。在調用http_cleanup()之前,它們不會以curl_easy_cleanup()結束。如果未定義USE_CURL_MULTI,則此值的上限為1.默認為1。
```
http.postBuffer
```
將數據發送到遠程系統時,智能HTTP傳輸使用的緩沖區的最大大小(以字節為單位)。對于大于此緩沖區大小的請求,使用HTTP / 1.1和Transfer-Encoding:chunked來避免在本地創建大量包文件。默認值為1 MiB,足以滿足大多數請求。
```
http.lowSpeedLimit, http.lowSpeedTime
```
如果HTTP傳輸速度小于 _http.lowSpeedLimit_ 的時間超過 _http.lowSpeedTime_ 秒,則傳輸中止。可以被`GIT_HTTP_LOW_SPEED_LIMIT`和`GIT_HTTP_LOW_SPEED_TIME`環境變量覆蓋。
```
http.noEPSV
```
一個布爾值,禁用curl使用EPSV ftp命令。這對于一些不支持EPSV模式的“差”ftp服務器很有幫助。可以被`GIT_CURL_FTP_NO_EPSV`環境變量覆蓋。默認值為false(curl將使用EPSV)。
```
http.userAgent
```
HTTP USER_AGENT字符串呈現給HTTP服務器。默認值表示客戶端Git的版本,例如git / 1.7.1。此選項允許您將此值覆蓋為更常見的值,例如Mozilla / 4.0。例如,如果通過防火墻連接將HTTP連接限制為一組常見的USER_AGENT字符串(但不包括git / 1.7.1之類的字符串),則可能需要這樣做。可以被`GIT_HTTP_USER_AGENT`環境變量覆蓋。
```
http.followRedirects
```
git是否應該遵循HTTP重定向。如果設置為`true`,git將透明地遵循它遇到的服務器發出的任何重定向。如果設置為`false`,git會將所有重定向視為錯誤。如果設置為`initial`,git將僅針對對遠程的初始請求進行重定向,但不會對后續的后續HTTP請求進行重定向。由于git使用重定向的URL作為后續請求的基礎,因此這通常就足夠了。默認值為`initial`。
```
http.<url>.*
```
上面的任何http。*選項都可以有選擇地應用于某些URL。對于匹配URL的配置鍵,將按以下順序將配置鍵的每個元素與URL的元素進行比較:
1. 方案(例如`https://example.com/`中的`https`)。該字段必須與配置密鑰和URL完全匹配。
2. 主機/域名(例如`https://example.com/`中的`example.com`)。該字段必須在配置密鑰和URL之間匹配。可以將`*`指定為主機名的一部分,以匹配此級別的所有子域。 `https://*.example.com/`例如匹配`https://foo.example.com/`,但不匹配`https://foo.bar.example.com/`。
3. 端口號(例如`http://example.com:8080/`中的`8080`)。該字段必須與配置密鑰和URL完全匹配。在匹配之前,省略的端口號會自動轉換為方案的正確默認值。
4. 路徑(例如,`https://example.com/repo.git`中的`repo.git`)。配置密鑰的路徑字段必須與URL的路徑字段完全匹配,或者與斜杠分隔的路徑元素的前綴匹配。這意味著路徑`foo/`的配置密鑰與URL路徑`foo/bar`匹配。前綴只能在斜杠(`/`)邊界上匹配。較長的匹配優先(因此具有路徑`foo/bar`的配置鍵與URL路徑`foo/bar`比僅具有路徑`foo/`的配置鍵更好地匹配)。
5. 用戶名(例如`https://user@example.com/repo.git`中的`user`)。如果配置密鑰具有用戶名,則它必須與URL中的用戶名完全匹配。如果配置密鑰沒有用戶名,則該配置密鑰將匹配具有任何用戶名(包括無)的URL,但優先級低于具有用戶名的配置密鑰。
上面的列表按優先順序排序;與配置密鑰的路徑匹配的URL優先于與其用戶名匹配的URL。例如,如果URL為`https://user@example.com/foo/bar`,則`https://example.com/foo`的配置密鑰匹配將優先于`https://user@example.com`的配置密鑰匹配。
在嘗試任何匹配之前,所有URL都會進行規范化(密碼部分,如果嵌入在URL中,為了匹配目的總是被忽略),以便簡單拼寫的等效URL將正確匹配。環境變量設置始終覆蓋任何匹配項。匹配的URL是直接給予Git命令的URL。這意味著由于重定向而訪問的任何URL都不參與匹配。
```
i18n.commitEncoding
```
編碼提交消息的字符存儲在; Git本身并不關心,但這些信息是必要的,例如從電子郵件或gitk圖形歷史瀏覽器(以及可能在將來的其他地方或其他瓷器中)導入提交時。參見例如 [git-mailinfo [1]](https://git-scm.com/docs/git-mailinfo) 。默認為 _utf-8_ 。
```
i18n.logOutputEncoding
```
運行 _git log_ 和朋友時,編碼提交消息的字符將轉換為。
```
imap.folder
```
要刪除郵件的文件夾,通常是“草稿”文件夾。例如:“INBOX.Drafts”,“INBOX / Drafts”或“[Gmail] / Drafts”。需要。
```
imap.tunnel
```
用于設置到IMAP服務器的隧道的命令,通過該隧道將管道命令而不是使用到服務器的直接網絡連接。未設置imap.host時需要。
```
imap.host
```
標識服務器的URL。使用`imap://`前綴進行非安全連接,使用`imaps://`前綴進行安全連接。設置imap.tunnel時忽略,否則需要。
```
imap.user
```
登錄服務器時使用的用戶名。
```
imap.pass
```
登錄服務器時使用的密碼。
```
imap.port
```
要連接到服務器的整數端口號。對于imap:// hosts,默認值為143;對于imaps:// hosts,默認值為993。設置imap.tunnel時忽略。
```
imap.sslverify
```
一個布爾值,用于啟用/禁用SSL / TLS連接使用的服務器證書的驗證。默認值為`true`。設置imap.tunnel時忽略。
```
imap.preformattedHTML
```
發送補丁時啟用/禁用html編碼的布爾值。 html編碼的補丁將用<pre>括起來。并具有text / html的內容類型。具有諷刺意味的是,啟用此選項會導致Thunderbird將補丁作為普通/文本格式=固定電子郵件發送。默認值為`false`。
```
imap.authMethod
```
使用IMAP服務器指定身份驗證的身份驗證方法。如果Git是使用NO_CURL選項構建的,或者如果你的curl版本早于7.34.0,或者你正在使用`--no-curl`選項運行git-imap-send,那么唯一支持的方法是 _CRAM-MD5_ 。如果未設置,則 _git imap-send_ 使用基本的IMAP明文LOGIN命令。
```
index.recordEndOfIndexEntries
```
指定索引文件是否應包含“結束索引條目”部分。這減少了多處理器計算機上的索引加載時間,但在使用2.20之前的Git版本讀取索引時會產生“忽略EOIE擴展”的消息。如果已明確啟用index.threads,則默認為 _true_ ,否則為 _false_ 。
```
index.recordOffsetTable
```
指定索引文件是否應包含“索引條目偏移表”部分。這減少了多處理器計算機上的索引加載時間,但在使用2.20之前的Git版本讀取索引時會產生消息“忽略IEOT擴展”。如果已明確啟用index.threads,則默認為 _true_ ,否則為 _false_ 。
```
index.threads
```
指定加載索引時要生成的線程數。這意味著減少多處理器計算機上的索引加載時間。指定0或 _true_ 將導致Git自動檢測CPU的數量并相應地設置線程數。指定1或 _false_ 將禁用多線程。默認為 _true_ 。
```
index.version
```
指定應初始化新索引文件的版本。這不會影響現有存儲庫。
```
init.templateDir
```
指定將從中復制模板的目錄。 (參見 [git-init [1]](https://git-scm.com/docs/git-init) 的“TEMPLATE DIRECTORY”部分。)
```
instaweb.browser
```
指定將用于在gitweb中瀏覽工作存儲庫的程序。見 [git-instaweb [1]](https://git-scm.com/docs/git-instaweb) 。
```
instaweb.httpd
```
用于在工作存儲庫上啟動gitweb的HTTP守護程序命令行。見 [git-instaweb [1]](https://git-scm.com/docs/git-instaweb) 。
```
instaweb.local
```
如果為[true],由 [git-instaweb [1]](https://git-scm.com/docs/git-instaweb) 啟動的Web服務器將綁定到本地IP(127.0.0.1)。
```
instaweb.modulePath
```
[git-instaweb [1]](https://git-scm.com/docs/git-instaweb) 的默認模塊路徑,而不是/usr/lib /apache2/modules。僅在httpd為Apache時使用。
```
instaweb.port
```
用于綁定gitweb httpd的端口號。見 [git-instaweb [1]](https://git-scm.com/docs/git-instaweb) 。
```
interactive.singleKey
```
在交互式命令中,允許用戶使用單個鍵提供單字母輸入(即,不按Enter鍵)。目前這被 [git-add [1]](https://git-scm.com/docs/git-add) , [git-checkout [1]](https://git-scm.com/docs/git-checkout) , [git-commit [1]](https://git-scm.com/docs/git-commit) 的`--patch`模式使用, [git-reset [1]](https://git-scm.com/docs/git-reset) 和 [git-stash [1]](https://git-scm.com/docs/git-stash) 。請注意,如果便攜式擊鍵輸入不可用,則會自動忽略此設置;需要Perl模塊Term :: ReadKey。
```
interactive.diffFilter
```
當交互式命令(例如`git add --patch`)顯示彩色差異時,git將通過此配置變量定義的shell命令管道diff。該命令可以進一步標記差異用于人類消費,只要它保持與原始差異中的線一一對應。默認為禁用(無過濾)。
```
log.abbrevCommit
```
如果為真,則 [git-log [1]](https://git-scm.com/docs/git-log) , [git-show [1]](https://git-scm.com/docs/git-show) 和 [git -whatchanged [1]](https://git-scm.com/docs/git-whatchanged) 假定`--abbrev-commit`。您可以使用`--no-abbrev-commit`覆蓋此選項。
```
log.date
```
設置 _log_ 命令的默認日期時間模式。設置log.date的值類似于使用 _git log_ 的`--date`選項。有關詳細信息,請參閱 [git-log [1]](https://git-scm.com/docs/git-log) 。
```
log.decorate
```
打印出log命令顯示的任何提交的引用名稱。如果指定_短_,則引用名稱前綴 _refs / heads /_ , _refs / tags /_ 和 _refs / remotes /_ 將不會打印。如果指定了 _full_ ,將打印完整的引用名稱(包括前綴)。如果指定了 _auto_ ,那么如果輸出到達終端,則ref名稱顯示為 _short_ ,否則不顯示ref名稱。這與`git log`的`--decorate`選項相同。
```
log.follow
```
如果`true`,`git log`將像單個<path>一樣使用`--follow`選項。給出。這與`--follow`具有相同的限制,即它不能用于跟蹤多個文件,并且在非線性歷史記錄上不能很好地工作。
```
log.graphColors
```
由逗號分隔的顏色列表,可用于在`git log --graph`中繪制歷史記錄行。
```
log.showRoot
```
如果為true,則初始提交將顯示為大型創建事件。這相當于對空樹的差異。像 [git-log [1]](https://git-scm.com/docs/git-log) 或 [git -whatchanged [1]](https://git-scm.com/docs/git-whatchanged) 這樣的工具,通常會隱藏根提交,現在將顯示它。默認為True。
```
log.showSignature
```
如果為真,則 [git-log [1]](https://git-scm.com/docs/git-log) , [git-show [1]](https://git-scm.com/docs/git-show) 和 [git -whatchanged [1]](https://git-scm.com/docs/git-whatchanged) 假定`--show-signature`。
```
log.mailmap
```
如果為真,則 [git-log [1]](https://git-scm.com/docs/git-log) , [git-show [1]](https://git-scm.com/docs/git-show) 和 [git -whatchanged [1]](https://git-scm.com/docs/git-whatchanged) 假定`--use-mailmap`。
```
mailinfo.scissors
```
如果為true,則默認情況下 [git-mailinfo [1]](https://git-scm.com/docs/git-mailinfo) (因此 [git-am [1]](https://git-scm.com/docs/git-am) )會起作用,就像在命令行中提供了--scissors選項一樣。當激活時,該特征在剪刀線之前從消息體中移除所有內容(即主要由“> 8”,“8<”和“ - ”組成)。
```
mailmap.file
```
擴充郵件地圖文件的位置。首先加載位于存儲庫根目錄中的默認郵件映射,然后加載此變量指向的郵件映射文件。 mailmap文件的位置可以位于存儲庫子目錄中,也可以位于存儲庫本身之外的某個位置。參見 [git-shortlog [1]](https://git-scm.com/docs/git-shortlog) 和 [git-blame [1]](https://git-scm.com/docs/git-blame) 。
```
mailmap.blob
```
與`mailmap.file`類似,但請將該值視為存儲庫中blob的引用。如果同時給出`mailmap.file`和`mailmap.blob`,則兩者都被解析,來自`mailmap.file`的條目優先。在裸存儲庫中,默認為`HEAD:.mailmap`。在非裸存儲庫中,它默認為空。
```
man.viewer
```
指定可用于以 _man_ 格式顯示幫助的程序。參見 [git-help [1]](https://git-scm.com/docs/git-help) 。
```
man.<tool>.cmd
```
指定用于調用指定man查看器的命令。在shell中評估指定的命令,并將man頁面作為參數傳遞。 (參見 [git-help [1]](https://git-scm.com/docs/git-help) 。)
```
man.<tool>.path
```
覆蓋可用于以 _man_ 格式顯示幫助的給定工具的路徑。參見 [git-help [1]](https://git-scm.com/docs/git-help) 。
```
merge.conflictStyle
```
指定在合并時將沖突的行寫入工作樹文件的樣式。默認為“合并”,顯示`<<<<<<<`沖突標記,一側更改,`=======`標記,另一側更改,然后是`>>>>>>>`標記。另一種樣式“diff3”在`=======`標記之前添加`|||||||`標記和原始文本。
```
merge.defaultToUpstream
```
如果在沒有任何提交參數的情況下調用merge,則通過使用存儲在其遠程跟蹤分支中的最后觀察值來合并為當前分支配置的上游分支。查詢`branch.<current branch>.remote`命名的遠程分支的`branch.<current branch>.merge`值,然后通過`remote.<remote>.fetch`將它們映射到相應的遠程跟蹤分支,并合并這些跟蹤分支的提示。
```
merge.ff
```
默認情況下,Git在合并作為當前提交的后代的提交時不會創建額外的合并提交。相反,當前分支的提示是快進的。當設置為`false`時,此變量告訴Git在這種情況下創建額外的合并提交(相當于從命令行提供`--no-ff`選項)。設置為`only`時,僅允許此類快進合并(相當于從命令行提供`--ff-only`選項)。
```
merge.verifySignatures
```
如果為true,則等效于--verify-signatures命令行選項。有關詳細信息,請參閱 [git-merge [1]](https://git-scm.com/docs/git-merge) 。
```
merge.branchdesc
```
除分支名稱外,還使用與其關聯的分支描述文本填充日志消息。默認為false。
```
merge.log
```
除了分支名稱之外,還要從正在合并的實際提交中填充最多具有指定數量的單行描述的日志消息。默認為false,true是20的同義詞。
```
merge.renameLimit
```
合并期間執行重命名檢測時要考慮的文件數;如果未指定,則默認為diff.renameLimit的值。如果關閉重命名檢測,此設置無效。
```
merge.renames
```
Git是否以及如何檢測重命名。如果設置為“false”,則禁用重命名檢測。如果設置為“true”,則啟用基本重命名檢測。默認為diff.renames的值。
```
merge.renormalize
```
告訴Git,存儲庫中文件的規范表示隨著時間的推移而發生了變化(例如,早期的提交記錄了帶有CRLF行結尾的文本文件,但最近提交了使用LF行結尾的文本文件)。在這樣的存儲庫中,Git可以在執行合并之前將提交中記錄的數據轉換為規范形式,以減少不必要的沖突。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 中的“合并具有不同簽入/簽出屬性的分支”部分。
```
merge.stat
```
是否在合并結束時打印ORIG_HEAD和合并結果之間的diffstat。默認為True。
```
merge.tool
```
控制 [git-mergetool [1]](https://git-scm.com/docs/git-mergetool) 使用的合并工具。下面的列表顯示了有效的內置值。任何其他值都被視為自定義合并工具,并且需要定義相應的mergetool.<tool>.cmd變量。
```
merge.guitool
```
當指定-g / - gui標志時,控制 [git-mergetool [1]](https://git-scm.com/docs/git-mergetool) 使用哪個合并工具。下面的列表顯示了有效的內置值。任何其他值都被視為自定義合并工具,并且需要定義相應的mergetool.<guitool>.cmd變量。
* araxis
* bc
* BC3
* codecompare
* deltawalker
* diffmerge
* diffuse
* ecmerge
* emerge
* examdiff
* guiffy
* gvimdiff
* gvimdiff2
* gvimdiff3
* kdiff3
* meld
* opendiff
* p4merge
* tkdiff
* tortoisemerge
* vimdiff
* vimdiff2
* vimdiff3
* winmerge
* xxdiff
```
merge.verbosity
```
控制遞歸合并策略顯示的輸出量。如果檢測到沖突,則0級除了最終錯誤消息外不輸出任何內容。級別1僅輸出沖突,輸出2個沖突和文件更改。 5級及以上輸出調試信息。默認值為2級。可以被`GIT_MERGE_VERBOSITY`環境變量覆蓋。
```
merge.<driver>.name
```
為自定義低級合并驅動程序定義一個人類可讀的名稱。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
merge.<driver>.driver
```
定義實現自定義低級合并驅動程序的命令。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
merge.<driver>.recursive
```
命名在共同祖先之間執行內部合并時使用的低級合并驅動程序。有關詳細信息,請參閱 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。
```
mergetool.<tool>.path
```
覆蓋給定工具的路徑。如果您的工具不在PATH中,這非常有用。
```
mergetool.<tool>.cmd
```
指定用于調用指定合并工具的命令。在shell中使用以下變量評估指定的命令: _BASE_ 是包含要合并的文件的公共基礎的臨時文件的名稱(如果可用); _LOCAL_ 是包含當前分支上文件內容的臨時文件的名稱; _REMOTE_ 是一個臨時文件的名稱,包含正在合并的分支的文件內容; _MERGED_ 包含合并工具應寫入成功合并結果的文件的名稱。
```
mergetool.<tool>.trustExitCode
```
對于自定義合并命令,請指定是否可以使用合并命令的退出代碼來確定合并是否成功。如果未設置為true,則檢查合并目標文件時間戳,如果文件已更新,則假定合并已成功,否則將提示用戶指示合并成功。
```
mergetool.meld.hasOutput
```
較舊版本的`meld`不支持`--output`選項。 Git將通過檢查`meld --help`的輸出來嘗試檢測`meld`是否支持`--output`。配置`mergetool.meld.hasOutput`將使Git跳過這些檢查并改為使用配置的值。將`mergetool.meld.hasOutput`設置為`true`告訴Git無條件使用`--output`選項,`false`避免使用`--output`。
```
mergetool.keepBackup
```
執行合并后,帶有沖突標記的原始文件可以保存為具有`.orig`擴展名的文件。如果此變量設置為`false`,則不保留此文件。默認為`true`(即保留備份文件)。
```
mergetool.keepTemporaries
```
在調用自定義合并工具時,Git使用一組臨時文件傳遞給該工具。如果工具返回錯誤并且此變量設置為`true`,則將保留這些臨時文件,否則在工具退出后將刪除它們。默認為`false`。
```
mergetool.writeToTemp
```
Git默認在工作樹中寫入臨時 _BASE_ , _LOCAL_ 和 _REMOTE_ 版本的沖突文件。設置`true`時,Git將嘗試為這些文件使用臨時目錄。默認為`false`。
```
mergetool.prompt
```
在每次調用合并解決方案之前提示。
```
notes.mergeStrategy
```
在解決筆記沖突時默認選擇哪種合并策略。必須是`manual`,`ours`,`theirs`,`union`或`cat_sort_uniq`中的一個。默認為`manual`。有關每種策略的更多信息,請參閱 [git-notes [1]](https://git-scm.com/docs/git-notes) 的“NOTES MERGE STRATEGIES”部分。
```
notes.<name>.mergeStrategy
```
在將注釋合并到refs / notes /< name>中時選擇哪種合并策略。這會覆蓋更一般的“notes.mergeStrategy”。有關可用策略的更多信息,請參閱 [git-notes [1]](https://git-scm.com/docs/git-notes) 中的“NOTES MERGE STRATEGIES”部分。
```
notes.displayRef
```
(完全限定的)refname,用于在顯示提交消息時顯示注釋。此變量的值可以設置為glob,在這種情況下,將顯示來自所有匹配引用的注釋。您也可以多次指定此配置變量。將為不存在的引用發出警告,但是會自動忽略與任何引用不匹配的glob。
可以使用`GIT_NOTES_DISPLAY_REF`環境變量覆蓋此設置,該變量必須是以冒號分隔的ref或glob列表。
“core.notesRef”的有效值(可能被GIT_NOTES_REF覆蓋)也隱式添加到要顯示的引用列表中。
```
notes.rewrite.<command>
```
使用<command>重寫提交時(當前`amend`或`rebase`)并且此變量設置為`true`,Git會自動將您的筆記從原始文件復制到重寫的提交。默認為`true`,但請參閱下面的“notes.rewriteRef”。
```
notes.rewriteMode
```
在重寫期間復制備注時(請參閱“notes.rewrite.<command>”選項),確定目標提交已有備注時要執行的操作。必須是`overwrite`,`concatenate`,`cat_sort_uniq`或`ignore`中的一個。默認為`concatenate`。
可以使用`GIT_NOTES_REWRITE_MODE`環境變量覆蓋此設置。
```
notes.rewriteRef
```
在重寫期間復制注釋時,指定應復制其注釋的(完全限定的)引用。ref可以是glob,在這種情況下,將復制所有匹配引用中的注釋。您也可以多次指定此配置。
沒有默認值;您必須配置此變量以啟用注釋重寫。將其設置為`refs/notes/commits`以啟用默認提交注釋的重寫。
可以使用`GIT_NOTES_REWRITE_REF`環境變量覆蓋此設置,該變量必須是以冒號分隔的ref或glob列表。
```
pack.window
```
在命令行上沒有給出窗口大小時, [git-pack-objects [1]](https://git-scm.com/docs/git-pack-objects) 使用的窗口大小。默認為10。
```
pack.depth
```
當命令行沒有給出最大深度時, [git-pack-objects [1]](https://git-scm.com/docs/git-pack-objects) 使用的最大增量深度。默認為50.最大值為4095。
```
pack.windowMemory
```
當命令行沒有給出限制時, [git-pack-objects [1]](https://git-scm.com/docs/git-pack-objects) 中每個線程為包窗口內存消耗的最大內存大小。該值可以后綴“k”,“m”或“g”。如果未配置(或明確設置為0),則沒有限制。
```
pack.compression
```
整數-1..9,表示包文件中對象的壓縮級別。 -1是zlib的默認值。 0表示沒有壓縮,1..9是各種速度/大小權衡,9表示最慢。如果未設置,則默認為core.compression。如果未設置,則默認為-1,即zlib默認值,即“速度和壓縮之間的默認折衷(當前等效于級別6)”。
請注意,更改壓縮級別不會自動重新壓縮所有現有對象。您可以通過將-F選項傳遞給 [git-repack [1]](https://git-scm.com/docs/git-repack) 來強制重新壓縮。
```
pack.island
```
擴展正則表達式,用于配置一組delta島。有關詳細信息,請參見 [git-pack-objects [1]](https://git-scm.com/docs/git-pack-objects) 中的“DELTA ISLANDS”。
```
pack.islandCore
```
指定要首先打包其對象的島名稱。這會在一個包的前面創建一種偽包,這樣來自指定島的對象有望更快地復制到應該提供給請求這些對象的用戶的任何包中。在實踐中,這意味著指定的島嶼應該可能對應于回購中最常克隆的島嶼。另請參見 [git-pack-objects [1]](https://git-scm.com/docs/git-pack-objects) 中的“DELTA ISLANDS”。
```
pack.deltaCacheSize
```
在將它們寫入包之前,用于緩存 [git-pack-objects [1]](https://git-scm.com/docs/git-pack-objects) 中的增量的最大內存字節數。此緩存用于加速寫入對象階段,一旦找到所有對象的最佳匹配,就不必重新計算最終的增量結果。盡管如此,在內存緊張的計算機上重新打包大型存儲庫可能會受到嚴重影響,特別是如果此緩存將系統推送到交換中。值為0表示沒有限制。可以使用1字節的最小大小來虛擬地禁用該高速緩存。默認為256 MiB。
```
pack.deltaCacheLimit
```
在 [git-pack-objects [1]](https://git-scm.com/docs/git-pack-objects) 中緩存的delta的最大大小。此緩存用于加速寫入對象階段,一旦找到所有對象的最佳匹配,就不必重新計算最終的增量結果。默認為1000.最大值為65535。
```
pack.threads
```
指定搜索最佳增量匹配時要生成的線程數。這要求使用pthreads編譯 [git-pack-objects [1]](https://git-scm.com/docs/git-pack-objects) ,否則將忽略此選項并顯示警告。這意味著減少多處理器機器的包裝時間。但是,增量搜索窗口所需的內存量乘以線程數。指定0將導致Git自動檢測CPU的數量并相應地設置線程數。
```
pack.indexVersion
```
指定默認包索引版本。對于1.5.2之前的Git版本使用的舊版程序包索引,有效值為1;對于具有大于4 GB的程序包的功能的新打包索引,有效值為2,以及對重新打包已損壞的程序包的適當保護。版本2是默認值。請注意,強制執行版本2,并且只要相應的包大于2 GB,就會忽略此配置選項。
如果您有一個不懂版本2 `*.idx`文件的舊Git,則克隆或獲取非本機協議(例如“http”),該協議將從另一端復制`*.pack`文件和相應的`*.idx`文件可能會為您提供一個無法使用舊版本的Git訪問的存儲庫。但是,如果`*.pack`文件小于2 GB,則可以在* .pack文件中使用 [git-index-pack [1]](https://git-scm.com/docs/git-index-pack) 來重新生成`*.idx`文件。
```
pack.packSizeLimit
```
包的最大尺寸。此設置僅影響重新打包時對文件的打包,即git://協議不受影響。它可以被 [git-repack [1]](https://git-scm.com/docs/git-repack) 的`--max-pack-size`選項覆蓋。達到此限制會導致創建多個packfiles;這反過來又會阻止創建位圖。允許的最小尺寸限制為1 MiB。默認值是無限制的。支持 _k_ , _m_ 或 _g_ 的共同單位后綴。
```
pack.useBitmaps
```
如果為true,git將在打包到stdout時使用pack位圖(如果可用)(例如,在獲取的服務器端期間)。默認為true。除非您正在調試包位圖,否則通常不需要關閉它。
```
pack.useSparse
```
如果為true,當存在 _--revs_ 選項時,git將默認使用 _git pack-objects_ 中的 _--sparse_ 選項。此算法僅處理出現在引入新對象的路徑中的樹。在計算包發送一個小變化時,這可以帶來顯著的性能優勢。但是,如果包含的提交包含某些類型的直接重命名,則可能會將額外的對象添加到包文件中。
```
pack.writeBitmaps (deprecated)
```
這是`repack.writeBitmaps`的棄用同義詞。
```
pack.writeBitmapHashCache
```
如果為true,git將在位圖索引中包含“哈希緩存”部分(如果有的話)。此緩存可用于提供git的delta啟發式,可能導致位圖和非位圖對象之間更好的增量(例如,在較舊的位圖包和自上一個gc以來已推送的對象之間提取時)。缺點是每個磁盤空間對象消耗4個字節,并且JGit的位圖實現不理解它,如果在同一個存儲庫中使用Git和JGit,則會導致它抱怨。默認為false。
```
pager.<cmd>
```
如果值為boolean,則在寫入tty時打開或關閉特定Git子命令輸出的分頁。否則,使用`pager.<cmd>`值指定的尋呼機打開子命令的分頁。如果在命令行中指定了`--paginate`或`--no-pager`,則它優先于此選項。要禁用所有命令的分頁,請將`core.pager`或`GIT_PAGER`設置為`cat`。
```
pretty.<name>
```
- [git-log [1]](https://git-scm.com/docs/git-log) 中指定的--pretty = format字符串的別名。這里定義的任何別名都可以像內置的漂亮格式一樣使用。例如,運行`git config pretty.changelog "format:* %H %s"`會導致調用`git log --pretty=changelog`等同于運行`git log "--pretty=format:* %H %s"`。請注意,將以靜默方式忽略與內置格式同名的別名。
```
protocol.allow
```
如果設置,請為未明確擁有策略的所有協議(`protocol.<name>.allow`)提供用戶定義的默認策略。默認情況下,如果未設置,已知安全協議(http,https,git,ssh,file)的默認策略為`always`,則已知危險協議(ext)的默認策略為`never`,并且所有其他協議默認策略為`user`。支持的政策:
* `always` - 始終可以使用協議。
* `never` - 永遠不能使用協議。
* `user` - 僅當`GIT_PROTOCOL_FROM_USER`未設置或值為1時才能使用該協議。當您希望協議可由用戶直接使用但不希望由此使用時,應使用此策略。在沒有用戶輸入的情況下執行clone / fetch / push命令的命令,例如遞歸子模塊初始化。
```
protocol.<name>.allow
```
使用clone / fetch / push命令設置協議`<name>`使用的策略。有關可用的政策,請參閱上面的`protocol.allow`。
git當前使用的協議名稱是:
* `file`:任何基于文件的本地路徑(包括`file://` URL或本地路徑)
* `git`:直接TCP連接上的匿名git協議(或代理,如果已配置)
* `ssh`:git over ssh(包括`host:path`語法,`ssh://`等)。
* `http`:git over http,“smart http”和“dumb http”。注意,這_不是_包括`https`;如果要同時配置兩者,則必須單獨執行此操作。
* 任何外部助手都按其協議命名(例如,使用`hg`來允許`git-remote-hg`助手)
```
protocol.version
```
實驗。如果設置,客戶端將嘗試使用指定的協議版本與服務器通信。如果未設置,客戶端將不會嘗試使用特定協議版本進行通信,這會導致使用協議版本0。支持的版本:
* `0` - 原始線路協議。
* `1` - 原始有線協議,在服務器的初始響應中添加了一個版本字符串。
* `2` - [有線協議版本2](protocol-v2) 。
```
pull.ff
```
默認情況下,Git在合并作為當前提交的后代的提交時不會創建額外的合并提交。相反,當前分支的提示是快進的。當設置為`false`時,此變量告訴Git在這種情況下創建額外的合并提交(相當于從命令行提供`--no-ff`選項)。設置為`only`時,僅允許此類快進合并(相當于從命令行提供`--ff-only`選項)。拉動時,此設置會覆蓋`merge.ff`。
```
pull.rebase
```
如果為true,則rebase在獲取的分支頂部分支,而不是在運行“git pull”時合并默認遠程的默認分支。請參閱“branch。< name> .rebase”,以便在每個分支的基礎上進行設置。
當`merges`時,將`--rebase-merges`選項傳遞給 _git rebase_ ,以便本地合并提交包含在rebase中(有關詳細信息,請參閱 [git-rebase [1]](https://git-scm.com/docs/git-rebase) )。
保留時,也將`--preserve-merges`傳遞給 _git rebase_ ,以便通過運行 _git pull_ 不會使本地提交的合并提交變平。
當值為`interactive`時,rebase以交互模式運行。
**注**:這可能是危險的操作;做**而不是**使用它,除非你理解其含義(詳見 [git-rebase [1]](https://git-scm.com/docs/git-rebase) )。
```
pull.octopus
```
一次拉出多個分支時使用的默認合并策略。
```
pull.twohead
```
拉動單個分支時使用的默認合并策略。
```
push.default
```
如果未明確給出refspec,則定義`git push`應采取的操作。不同的值非常適合特定的工作流程;例如,在純粹的中央工作流程中(即獲取源等于推送目的地),`upstream`可能就是你想要的。可能的值是:
* `nothing` - 除非明確給出refspec,否則不要推送任何內容(錯誤輸出)。這主要是針對那些希望通過始終明確避免錯誤的人。
* `current` - 推送當前分支以更新接收端具有相同名稱的分支。適用于中央和非中央工作流程。
* `upstream` - 將當前分支推回到分支,該分支的更改通常集成到當前分支(稱為`@{upstream}`)。如果您要推送到通常從中拉出的相同存儲庫(即中央工作流),則此模式才有意義。
* `tracking` - 這是`upstream`的已棄用的同義詞。
* `simple` - 在集中式工作流程中,像`upstream`一樣工作,如果上游分支的名稱與本地分支不同,則可以更加安全地拒絕推送。
當推送到與通常拉出的遙控器不同的遙控器時,請作為`current`。這是最安全的選擇,適合初學者。
此模式已成為Git 2.0中的默認模式。
* `matching` - 推送兩端具有相同名稱的所有分支。這使你正在推動的存儲庫記住將被推出的分支集合(例如,如果你總是在那里推動 _maint_ 和 _master_ 而沒有其他分支,你推送到的存儲庫將有這兩個分支,你的本地 _maint_ 和_主_將被推到那里。
要有效地使用這種模式,你必須確保_所有_你要推出的分支都準備好在運行 _git push_ 之前被推出,因為這個模式的重點是允許你一次推動所有分支。如果您通常只在一個分支上完成工作并推出結果,而其他分支未完成,則此模式不適合您。此模式也不適合推入??共享中央存儲庫,因為其他人可能會在那里添加新分支,或者更新控制之外的現有分支的提示。
這曾經是默認值,但不是因為Git 2.0(`simple`是新的默認值)。
```
push.followTags
```
如果設置為true,則默認啟用`--follow-tags`選項。您可以通過指定`--no-follow-tags`在推送時覆蓋此配置。
```
push.gpgSign
```
可以設置為布爾值,或者字符串 _if-ask_ 。真值會導致所有推送都被GPG簽名,就像`--signed`傳遞給 [git-push [1]](https://git-scm.com/docs/git-push) 一樣。字符串 _if-ask_ 會在服務器支持的情況下導致推送被簽名,就像`--signed=if-asked`被傳遞給 _git push_ 一樣。 false值可能會覆蓋優先級較低的配置文件中的值。顯式命令行標志始終會覆蓋此配置選項。
```
push.pushOption
```
當沒有從命令行給出`--push-option=<option>`參數時,`git push`表現得好像每個< value>該變量的值為`--push-option=<value>`。
這是一個多值變量,可以在更高優先級的配置文件(例如存儲庫中的`.git/config`)中使用空值來清除從較低優先級配置文件(例如`$HOME/.gitconfig`)繼承的值。
例:
/ etc / gitconfig push.pushoption =一個push.pushoption = b
?/ .gitconfig push.pushoption = c
repo / .git / config push.pushoption = push.pushoption = b
這將導致僅b(a和c被清除)。
```
push.recurseSubmodules
```
確保要推送的修訂使用的所有子模塊提交都可在遠程跟蹤分支上使用。如果值為 _check_,然后Git將驗證在要推送的修訂版本中更改的所有子模塊提交在子模塊的至少一個遠程處可用。如果缺少任何提交,則推送將中止并以非零狀態退出。如果值為 _on-demand_,那么將推送在要推送的修訂中更改的所有子模塊。如果按需無法推送所有必要的修訂,它也將被中止并退出非零狀態。如果值為_否_,則保留推送時忽略子模塊的默認行為。您可以通過指定 _--recurse-submodules = check | on-demand | no_ 在推送時覆蓋此配置。
```
rebase.useBuiltin
```
設置為`false`以使用 [git-rebase [1]](https://git-scm.com/docs/git-rebase) 的舊版shellcript實現。默認情況下是`true`,這意味著在C中使用內置的重寫。
C重寫首先包含在Git版本2.20中。如果在重寫中發現任何錯誤,此選項可用于重新啟用舊版本。此選項和 [git-rebase [1]](https://git-scm.com/docs/git-rebase) 的shellscript版本將在以后的某個版本中刪除。
如果您發現某些理由將此選項設置為`false`而非一次性測試,則應將行為差異報告為git中的錯誤。
```
rebase.stat
```
是否顯示自上次rebase以來上游改變的差異。默認為False。
```
rebase.autoSquash
```
如果設置為true,則默認啟用`--autosquash`選項。
```
rebase.autoStash
```
設置為true時,在操作開始之前自動創建臨時存儲條目,并在操作結束后應用它。這意味著您可以在臟工作樹上運行rebase。但是,謹慎使用:成功重組后的最終存儲應用程序可能會導致非平凡的沖突。 [git-rebase [1]](https://git-scm.com/docs/git-rebase) 的`--no-autostash`和`--autostash`選項可以覆蓋此選項。默認為false。
```
rebase.missingCommitsCheck
```
如果設置為“warn”,git rebase -i將在刪除某些提交時打印警告(例如刪除了一行),但是rebase仍將繼續。如果設置為“error”,它將打印上一個警告并停止rebase,然后可以使用 _git rebase --edit-todo_ 來糾正錯誤。如果設置為“忽略”,則不進行檢查。要在沒有警告或錯誤的情況下刪除提交,請使用待辦事項列表中的`drop`命令。默認為“ignore”。
```
rebase.instructionFormat
```
[git-log [1]](https://git-scm.com/docs/git-log) 中指定的格式字符串,用于交互式rebase期間的待辦事項列表。格式將自動在格式之前添加長提交哈希。
```
rebase.abbreviateCommands
```
如果設置為true,`git rebase`將在待辦事項列表中使用縮寫的命令名稱,結果如下:
```
p deadbee The oneline of the commit
p fa1afe1 The oneline of the next commit
...
```
代替:
```
pick deadbee The oneline of the commit
pick fa1afe1 The oneline of the next commit
...
```
默認為false。
```
rebase.rescheduleFailedExec
```
自動重新安排失敗的`exec`命令。這僅在交互模式下(或提供`--exec`選項時)才有意義。這與指定`--reschedule-failed-exec`選項相同。
```
receive.advertiseAtomic
```
默認情況下,git-receive-pack將向其客戶端通告原子推送功能。如果您不想宣傳此功能,請將此變量設置為false。
```
receive.advertisePushOptions
```
設置為true時,git-receive-pack將向其客戶端通告推送選項功能。默認為False。
```
receive.autogc
```
默認情況下,git-receive-pack在從git-push接收數據并更新refs后將運行“git-gc --auto”。您可以通過將此變量設置為false來停止它。
```
receive.certNonceSeed
```
通過將此變量設置為字符串,`git receive-pack`將接受`git push --signed`并使用此字符串作為密鑰使用HMAC保護的“nonce”進行驗證。
```
receive.certNonceSlop
```
當`git push --signed`在這么多秒內發送一個帶有“nonce”的推送證書時,將由證書中的“nonce”導出到`GIT_PUSH_CERT_NONCE`到掛鉤(而不是接收包要求發送方包括什么)。這可以使`pre-receive`和`post-receive`中的檢查更容易一些。而不是檢查`GIT_PUSH_CERT_NONCE_SLOP`環境變量,記錄nonce過時的秒數,以決定是否要接受證書,他們只能檢查`GIT_PUSH_CERT_NONCE_STATUS`是`OK`。
```
receive.fsckObjects
```
如果設置為true,git-receive-pack將檢查所有收到的對象。有關已檢查的內容,請參閱`transfer.fsckObjects`。默認為false。如果未設置,則使用`transfer.fsckObjects`的值。
```
receive.fsck.<msg-id>
```
像`fsck.<msg-id> `這樣的行為,但被 [git-receive-pack [1]](https://git-scm.com/docs/git-receive-pack) 代替 [git-fsck [1]](https://git-scm.com/docs/git-fsck) 使用。有關詳細信息,請參閱`fsck.<msg-id> `文檔。
```
receive.fsck.skipList
```
像`fsck.skipList`這樣的行為,但被 [git-receive-pack [1]](https://git-scm.com/docs/git-receive-pack) 代替 [git-fsck [1]](https://git-scm.com/docs/git-fsck) 使用。有關詳細信息,請參閱`fsck.skipList`文檔。
```
receive.keepAlive
```
從客戶端收到包后,`receive-pack`在處理包時可能不會產生任何輸出(如果指定了`--quiet`),導致某些網絡丟棄TCP連接。設置此選項后,如果`receive-pack`在`receive.keepAlive`秒內沒有在此階段傳輸任何數據,它將發送一個短的keepalive數據包。默認值為5秒;設置為0以完全禁用Keepalive。
```
receive.unpackLimit
```
如果推送中接收的對象數低于此限制,則對象將解壓縮為松散的對象文件。但是,如果接收到的對象的數量等于或超過此限制,則在添加任何丟失的delta基礎之后,接收的包將作為包存儲。從推送中存儲包可以使推送操作更快完成,尤其是在慢速文件系統上。如果未設置,則使用`transfer.unpackLimit`的值。
```
receive.maxInputSize
```
如果傳入包流的大小大于此限制,則git-receive-pack將錯誤輸出,而不是接受包文件。如果未設置或設置為0,則大小不受限制。
```
receive.denyDeletes
```
如果設置為true,git-receive-pack將拒絕刪除ref的ref更新。使用它來防止通過推送刪除這樣的引用。
```
receive.denyDeleteCurrent
```
如果設置為true,git-receive-pack將拒絕ref更新,該更新將刪除非裸存儲庫的當前已檢出分支。
```
receive.denyCurrentBranch
```
如果設置為true或“refuse”,git-receive-pack將拒絕對非裸存儲庫的當前已檢出分支的ref更新。這樣的推送有潛在危險,因為它使HEAD與索引和工作樹不同步。如果設置為“警告”,則向stderr打印此類推送的警告,但允許推進繼續。如果設置為false或“ignore”,則允許此類推送而不顯示任何消息。默認為“refuse”。
另一個選項是“updateInstead”,如果進入當前分支,它將更新工作樹。此選項用于在通過交互式ssh無法輕松訪問一側時同步工作目錄(例如,實時網站,因此要求工作目錄清潔)。在VM內部開發以在不同的操作系統上測試和修復代碼時,此模式也很方便。
默認情況下,如果工作樹或索引與HEAD有任何差異,“updateInstead”將拒絕推送,但`push-to-checkout`掛鉤可用于自定義此操作。見 [githooks [5]](https://git-scm.com/docs/githooks) 。
```
receive.denyNonFastForwards
```
如果設置為true,git-receive-pack將拒絕不是快進的ref更新。使用此選項可以防止通過推送進行此類更新,即使強制推送也是如此。初始化共享存儲庫時設置此配置變量。
```
receive.hideRefs
```
此變量與`transfer.hideRefs`相同,但僅適用于`receive-pack`(因此影響推送,但不影響提取)。嘗試通過`git push`更新或刪除隱藏的ref被拒絕。
```
receive.updateServerInfo
```
如果設置為true,git-receive-pack將在從git-push接收數據并更新refs后運行git-update-server-info。
```
receive.shallowUpdate
```
如果設置為true,則當新引用需要新的淺根時,可以更新.git / shallow。否則這些裁判被拒絕。
```
remote.pushDefault
```
默認情況下推送到的遙控器。覆蓋所有分支的`branch.<name>.remote`,并由特定分支的`branch.<name>.pushRemote`覆蓋。
```
remote.<name>.url
```
遠程存儲庫的URL。參見 [git-fetch [1]](https://git-scm.com/docs/git-fetch) 或 [git-push [1]](https://git-scm.com/docs/git-push) 。
```
remote.<name>.pushurl
```
遠程存儲庫的推送URL。見 [git-push [1]](https://git-scm.com/docs/git-push) 。
```
remote.<name>.proxy
```
對于需要curl(http,https和ftp)的遠程控制,用于該遠程的代理的URL。設置為空字符串以禁用該遠程代理。
```
remote.<name>.proxyAuthMethod
```
對于需要curl(http,https和ftp)的遠程控制,用于對正在使用的代理進行身份驗證的方法(可能在`remote.<name>.proxy`中設置)。見`http.proxyAuthMethod`。
```
remote.<name>.fetch
```
[git-fetch [1]](https://git-scm.com/docs/git-fetch) 的默認“refspec”集。參見 [git-fetch [1]](https://git-scm.com/docs/git-fetch) 。
```
remote.<name>.push
```
[git-push [1]](https://git-scm.com/docs/git-push) 的默認“refspec”集。見 [git-push [1]](https://git-scm.com/docs/git-push) 。
```
remote.<name>.mirror
```
如果為true,則推送到此遙控器將自動表現為在命令行上給出`--mirror`選項。
```
remote.<name>.skipDefaultUpdate
```
如果為true,則在使用 [git-fetch [1]](https://git-scm.com/docs/git-fetch) 或 [git-remote [1]](https://git-scm.com/docs/git-remote) 的`update`子命令進行更新時,默認情況下將跳過此遙控器。
```
remote.<name>.skipFetchAll
```
如果為true,則在使用 [git-fetch [1]](https://git-scm.com/docs/git-fetch) 或 [git-remote [1]](https://git-scm.com/docs/git-remote) 的`update`子命令進行更新時,默認情況下將跳過此遙控器。
```
remote.<name>.receivepack
```
推送時在遠程端執行的默認程序。請參閱 [git-push [1]](https://git-scm.com/docs/git-push) 的選項--receive-pack。
```
remote.<name>.uploadpack
```
獲取時在遠程端執行的默認程序。請參閱 [git-fetch-pack [1]](https://git-scm.com/docs/git-fetch-pack) 的選項--upload-pack。
```
remote.<name>.tagOpt
```
將此值設置為--no-tags會在從遠程< name>提取時禁用自動標記。將其設置為--tags將從遠程< name>獲取每個標記,即使它們無法從遠程分支頭部訪問。將這些標志直接傳遞給 [git-fetch [1]](https://git-scm.com/docs/git-fetch) 可以覆蓋此設置。請參閱 [git-fetch [1]](https://git-scm.com/docs/git-fetch) 的選項--tags和--no-tags。
```
remote.<name>.vcs
```
將其設置為值<vcs>將導致Git與git-remote-<vcs>進行遠程交互幫手。
```
remote.<name>.prune
```
設置為true時,默認情況下從此遠程獲取也將刪除遠程不再存在的任何遠程跟蹤引用(就像在命令行上給出`--prune`選項一樣)。覆蓋`fetch.prune`設置(如果有)。
```
remote.<name>.pruneTags
```
設置為true時,如果通常通過`remote.<name>.prune`,`fetch.prune`或`--prune`激活修剪,默認情況下從此遙控器獲取也將刪除遙控器上不再存在的任何本地標簽。覆蓋`fetch.pruneTags`設置(如果有)。
另請參見[HTD0] git-fetch [1] 的`remote.<name>.prune`和PRUNING部分。
```
remotes.<group>
```
由“git remote update <group>”提取的遙控器列表。見 [git-remote [1]](https://git-scm.com/docs/git-remote) 。
```
repack.useDeltaBaseOffset
```
默認情況下, [git-repack [1]](https://git-scm.com/docs/git-repack) 會創建使用delta-base offset的包。如果您需要直接或通過諸如http之類的啞協議與版本低于1.4.4的Git共享您的存儲庫,那么您需要將此選項設置為“false”并重新打包。通過本機協議從舊Git版本訪問不受此選項的影響。
```
repack.packKeptObjects
```
如果設置為true,則使`git repack`表現為`--pack-kept-objects`已通過。有關詳細信息,請參閱 [git-repack [1]](https://git-scm.com/docs/git-repack) 。默認為`false`,但如果正在寫入位圖索引,則為`true`(通過`--write-bitmap-index`或`repack.writeBitmaps`)。
```
repack.useDeltaIslands
```
如果設置為true,則使`git repack`表現為`--delta-islands`已通過。默認為`false`。
```
repack.writeBitmaps
```
如果為true,git會在將所有對象打包到磁盤時寫入位圖索引(例如,運行`git repack -a`時)。該索引可以加速為克隆和提取創建的后續包的“計數對象”階段,代價是一些磁盤空間和在初始重新打包上花費的額外時間。如果創建了多個packfiles,則無效。默認為false。
```
rerere.autoUpdate
```
設置為true時,`git-rerere`在使用先前記錄的分辨率干凈地解決沖突后,使用結果內容更新索引。默認為false。
```
rerere.enabled
```
激活已解決沖突的記錄,以便在再次遇到沖突時,可以自動解決相同的沖突問題。默認情況下,如果`$GIT_DIR`下有`rr-cache`目錄,則啟用 [git-rerere [1]](https://git-scm.com/docs/git-rerere) 。如果之前在存儲庫中使用了“rerere”。
```
reset.quiet
```
設置為true時, _git reset_ 將默認為 _--quiet_ 選項。
```
sendemail.identity
```
配置標識。給定時,會導致 _sendemail中的值。< identity>_ 子部分優先于 _sendemail_ 部分中的值。默認標識是`sendemail.identity`的值。
```
sendemail.smtpEncryption
```
有關說明,請參閱 [git-send-email [1]](https://git-scm.com/docs/git-send-email) 。請注意,此設置不受_標識_機制的約束。
```
sendemail.smtpssl (deprecated)
```
_sendemail.smtpEncryption = ssl_ 的棄用別名。
```
sendemail.smtpsslcertpath
```
ca證書的路徑(目錄或單個文件)。將其設置為空字符串以禁用證書驗證。
```
sendemail.<identity>.*
```
下面找到的 _sendemail。*_ 參數的特定于身份的版本,優先于通過命令行或`sendemail.identity`選擇此身份時的參數。
```
sendemail.aliasesFile
```
```
sendemail.aliasFileType
```
```
sendemail.annotate
```
```
sendemail.bcc
```
```
sendemail.cc
```
```
sendemail.ccCmd
```
```
sendemail.chainReplyTo
```
```
sendemail.confirm
```
```
sendemail.envelopeSender
```
```
sendemail.from
```
```
sendemail.multiEdit
```
```
sendemail.signedoffbycc
```
```
sendemail.smtpPass
```
```
sendemail.suppresscc
```
```
sendemail.suppressFrom
```
```
sendemail.to
```
```
sendemail.tocmd
```
```
sendemail.smtpDomain
```
```
sendemail.smtpServer
```
```
sendemail.smtpServerPort
```
```
sendemail.smtpServerOption
```
```
sendemail.smtpUser
```
```
sendemail.thread
```
```
sendemail.transferEncoding
```
```
sendemail.validate
```
```
sendemail.xmailer
```
有關說明,請參閱 [git-send-email [1]](https://git-scm.com/docs/git-send-email) 。
```
sendemail.signedoffcc (deprecated)
```
`sendemail.signedoffbycc`的棄用別名。
```
sendemail.smtpBatchSize
```
每次連接要發送的消息數,之后將發生重新登錄。如果值為0或未定義,則在一個連接中發送所有消息。另請參閱 [git-send-email [1]](https://git-scm.com/docs/git-send-email) 的`--batch-size`選項。
```
sendemail.smtpReloginDelay
```
秒重新連接到smtp服務器之前等待。另請參閱 [git-send-email [1]](https://git-scm.com/docs/git-send-email) 的`--relogin-delay`選項。
```
sequence.editor
```
`git rebase -i`用于編輯rebase指令文件的文本編輯器。該值在使用時由shell解釋。它可以被`GIT_SEQUENCE_EDITOR`環境變量覆蓋。未配置時,將使用默認提交消息編輯器。
```
showBranch.default
```
[git-show-branch [1]](https://git-scm.com/docs/git-show-branch) 的默認分支集。參見 [git-show-branch [1]](https://git-scm.com/docs/git-show-branch) 。
```
splitIndex.maxPercentChange
```
使用拆分索引功能時,它指定拆分索引可以包含的條目百分比與寫入新共享索引之前拆分索引和共享索引中的條目總數的比較。該值應介于0和100之間。如果值為0,則始終寫入新的共享索引,如果為100,則永遠不會寫入新的共享索引。默認情況下,該值為20,因此如果拆分索引中的條目數大于條目總數的20%,則會寫入新的共享索引。參見 [git-update-index [1]](https://git-scm.com/docs/git-update-index) 。
```
splitIndex.sharedIndexExpire
```
使用拆分索引功能時,在創建新的共享索引文件時,將刪除自此變量指定以來未修改的共享索引文件。值“now”立即使所有條目到期,并且“never”完全抑制到期。默認值為“2.weeks.ago”。請注意,每次基于它創建新的拆分索引文件或從中讀取新的拆分索引文件時,都會將共享索引文件視為已修改(為了過期)。參見 [git-update-index [1]](https://git-scm.com/docs/git-update-index) 。
```
ssh.variant
```
默認情況下,Git根據配置的SSH命令的基本名稱(使用環境變量`GIT_SSH`或`GIT_SSH_COMMAND`或配置設置`core.sshCommand`配置)確定要使用的命令行參數。如果無法識別basename,Git將嘗試通過首先使用`-G`(打印配置)選項調用已配置的SSH命令來檢測對OpenSSH選項的支持,然后使用OpenSSH選項(如果成功)或除主機之外沒有其他選項和遠程命令(如果失敗)。
可以設置配置變量`ssh.variant`以覆蓋此檢測。有效值為`ssh`(使用OpenSSH選項),`plink`,`putty`,`tortoiseplink`,`simple`(除主機和遠程命令外沒有其他選項)。可以使用值`auto`顯式請求默認自動檢測。任何其他值都被視為`ssh`。也可以通過環境變量`GIT_SSH_VARIANT`覆蓋此設置。
每個變體使用的當前命令行參數如下:
* `ssh` - [-p port] [-4] [-6] [-o option] [username @] host命令
* `simple` - [用戶名@]主機命令
* `plink`或`putty` - [-P port] [-4] [-6] [username @] host命令
* `tortoiseplink` - [-P port] [-4] [-6] -batch [username @] host命令
除`simple`變體外,命令行參數可能會隨著git獲得新功能而改變。
```
status.relativePaths
```
默認情況下, [git-status [1]](https://git-scm.com/docs/git-status) 顯示相對于當前目錄的路徑。將此變量設置為`false`會顯示相對于存儲庫根目錄的路徑(這是v1.5.4之前的Git的默認值)。
```
status.short
```
設置為true以在 [git-status [1]](https://git-scm.com/docs/git-status) 中默認啟用--short。選項--no-short優先于此變量。
```
status.branch
```
設置為true以在 [git-status [1]](https://git-scm.com/docs/git-status) 中默認啟用--branch。選項--no-branch優先于此變量。
```
status.displayCommentPrefix
```
如果設置為true, [git-status [1]](https://git-scm.com/docs/git-status) 將在每個輸出行之前插入一個注釋前綴(以`core.commentChar`開頭,默認為`#`)。這是 [git-status [1]](https://git-scm.com/docs/git-status) 在Git 1.8.4和之前的行為。默認為false。
```
status.renameLimit
```
在 [git-status [1]](https://git-scm.com/docs/git-status) 和 [git-commit [1]](https://git-scm.com/docs/git-commit) 中執行重命名檢測時要考慮的文件數。默認為diff.renameLimit的值。
```
status.renames
```
Git是否以及如何在 [git-status [1]](https://git-scm.com/docs/git-status) 和 [git-commit [1]](https://git-scm.com/docs/git-commit) 中檢測重命名。如果設置為“false”,則禁用重命名檢測。如果設置為“true”,則啟用基本重命名檢測。如果設置為“復制”或“復制”,Git也會檢測副本。默認為diff.renames的值。
```
status.showStash
```
如果設置為true, [git-status [1]](https://git-scm.com/docs/git-status) 將顯示當前隱藏的條目數。默認為false。
```
status.showUntrackedFiles
```
默認情況下, [git-status [1]](https://git-scm.com/docs/git-status) 和 [git-commit [1]](https://git-scm.com/docs/git-commit) 顯示當前未被Git跟蹤的文件。僅包含未跟蹤文件的目錄僅顯示目錄名稱。顯示未跟蹤的文件意味著Git需要lstat()整個存儲庫中的所有文件,這在某些系統上可能很慢。因此,此變量控制命令如何顯示未跟蹤的文件。可能的值是:
* `no` - 不顯示未跟蹤的文件。
* `normal` - 顯示未跟蹤的文件和目錄。
* `all` - 顯示未跟蹤目錄中的單個文件。
如果未指定此變量,則默認為 _normal_ 。可以使用 [git-status [1]](https://git-scm.com/docs/git-status) 和 [git-commit [1]](https://git-scm.com/docs/git-commit) 的-u | --ntracked-files選項覆蓋此變量。
```
status.submoduleSummary
```
默認為false。如果將此值設置為非零數字或為真(與-1或無限數字相同),則將啟用子模塊摘要,并顯示已修改子模塊的提交摘要(請參閱[HTG0的--summary-limit選項] ] git-submodule [1] )。請注意,當`diff.ignoreSubmodules`設置為 _all_ 時,或者僅對于那些`submodule.<name>.ignore=all`的子模塊,將禁止所有子模塊的摘要輸出命令。該規則的唯一例外是狀態和提交將顯示分階段子模塊更改。要查看忽略的子模塊的摘要,您可以使用--ignore-submodules = dirty命令行選項或 _git子模塊摘要_命令,該命令顯示類似的輸出但不遵循這些設置。
```
stash.showPatch
```
如果將其設置為true,則沒有選項的`git stash show`命令將以補丁形式顯示存儲條目。默認為false。請參閱 [git-stash [1]](https://git-scm.com/docs/git-stash) 中 _show_ 命令的說明。
```
stash.showStat
```
如果將此值設置為true,則沒有選項的`git stash show`命令將顯示存儲條目的diffstat。默認為true。請參閱 [git-stash [1]](https://git-scm.com/docs/git-stash) 中 _show_ 命令的說明。
```
submodule.<name>.url
```
子模塊的URL。該變量通過 _git submodule init_ 從.gitmodules文件復制到git config。用戶可以在通過 _git子模塊更新_獲取子模塊之前更改配置的URL。如果既未設置submodule.<name>.active或submodule.active,則此變量的存在將用作回退以指示子模塊是否對git命令感興趣。有關詳細信息,請參閱 [git-submodule [1]](https://git-scm.com/docs/git-submodule) 和 [gitmodules [5]](https://git-scm.com/docs/gitmodules) 。
```
submodule.<name>.update
```
通過 _git submodule update_ 更新子模塊的方法,這是唯一受影響的命令,其他如 _git checkout --recurse-submodules_ 不受影響。它存在是出于歷史原因,當 _git子模塊_是與子模塊交互的唯一命令時; `submodule.active`和`pull.rebase`等設置更具體。它由 [gitmodules [5]](https://git-scm.com/docs/gitmodules) 文件中的`git submodule init`填充。請參閱 [git-submodule [1]](https://git-scm.com/docs/git-submodule) 中 _update_ 命令的說明。
```
submodule.<name>.branch
```
子模塊的遠程分支名稱,由`git submodule update --remote`使用。設置此選項可覆蓋`.gitmodules`文件中的值。有關詳細信息,請參閱 [git-submodule [1]](https://git-scm.com/docs/git-submodule) 和 [gitmodules [5]](https://git-scm.com/docs/gitmodules) 。
```
submodule.<name>.fetchRecurseSubmodules
```
此選項可用于控制此子模塊的遞歸獲取。可以使用 - [no-] recurse-submodules命令行選項“git fetch”和“git pull”來覆蓋它。此設置將覆蓋 [gitmodules [5]](https://git-scm.com/docs/gitmodules) 文件中的設置。
```
submodule.<name>.ignore
```
定義在什么情況下“git status”和diff系列將子模塊顯示為已修改。當設置為“all”時,它將永遠不會被視為已修改(但它仍將顯示在狀態輸出中并在提交時提交),“臟”將忽略對子模塊工作樹的所有更改并僅采用差異在子模塊的HEAD和超級項目中記錄的提交之間考慮。 “未跟蹤”還將顯示其工作樹中具有已修改跟蹤文件的子模塊。使用“none”(未設置此選項時的默認值)還會顯示在其工作樹中具有未跟蹤文件的子模塊已更改。此設置將覆蓋此子模塊的.gitmodules中的任何設置,可以使用“--ignore-submodules”選項在命令行上覆蓋這兩個設置。 _git submodule_ 命令不受此設置的影響。
```
submodule.<name>.active
```
布爾值,指示子模塊是否對git命令感興趣。此配置選項優先于submodule.active配置選項。有關詳細信息,請參閱 [gitsubmodules [7]](https://git-scm.com/docs/gitsubmodules) 。
```
submodule.active
```
一個重復字段,其中包含用于匹配子模塊路徑的pathspec,以確定子模塊是否對git命令感興趣。有關詳細信息,請參閱 [gitsubmodules [7]](https://git-scm.com/docs/gitsubmodules) 。
```
submodule.recurse
```
指定默認情況下命令是否遞歸到子模塊。這適用于具有`--recurse-submodules`選項的所有命令,`clone`除外。默認為false。
```
submodule.fetchJobs
```
指定同時獲取/克隆的子模塊數。正整數允許最多并行獲取的子模塊數。值為0將給出一些合理的默認值。如果未設置,則默認為1。
```
submodule.alternateLocation
```
指定在克隆子模塊時子模塊如何獲取備用模塊。可能的值為`no`,`superproject`。默認情況下,假定`no`,不添加引用。當該值設置為`superproject`時,要克隆的子模塊將計算其相對于超級項目替代的交替位置。
```
submodule.alternateErrorStrategy
```
指定如何使用`submodule.alternateLocation`計算的子模塊的替代項處理錯誤。可能的值為`ignore`,`info`,`die`。默認值為`die`。
```
tag.forceSignAnnotated
```
一個布爾值,用于指定創建的帶注釋標簽是否應該進行GPG簽名。如果在命令行中指定了`--annotate`,則它優先于此選項。
```
tag.sort
```
當 [git-tag [1]](https://git-scm.com/docs/git-tag) 顯示時,此變量控制標簽的排序順序。沒有“--sort =<value>”提供的選項,此變量的值將用作默認值。
```
tar.umask
```
此變量可用于限制tar存檔條目的權限位。默認值為0002,關閉世界寫入位。特殊值“user”表示將使用歸檔用戶的umask。請參閱umask(2)和 [git-archive [1]](https://git-scm.com/docs/git-archive) 。
```
transfer.fsckObjects
```
如果未設置`fetch.fsckObjects`或`receive.fsckObjects`,則使用此變量的值。默認為false。
設置后,如果格式錯誤的對象或指向不存在的對象的鏈接,則提取或接收將中止。此外,還會檢查各種其他問題,包括遺留問題(請參閱`fsck.<msg-id> `),以及潛在的安全問題,如`.GIT`目錄或惡意`.gitmodules`文件的存在(請參閱v2.2.1的發行說明和v2.17.1了解詳情)。在將來的版本中可能會添加其他健全性和安全性檢查。
在接收方,失敗的fsckObjects會使這些對象無法訪問,請參閱 [git-receive-pack [1]](https://git-scm.com/docs/git-receive-pack) 中的“QUARANTINE ENVIRONMENT”。在獲取方面,格式錯誤的對象將在存儲庫中保持未引用狀態。
由于`fetch.fsckObjects`實現的非隔離性質,不能依賴于像`receive.fsckObjects`那樣保持對象存儲區清潔。
當對象被解包時,它們被寫入對象存儲庫,因此可能會出現惡意對象被引入的情況,即使“獲取”失敗,只有后續的“獲取”成功,因為只檢查新的傳入對象,而不是已經寫入對象庫的。不應該依賴這種行為上的差異。將來,這些對象也可能被隔離以用于“獲取”。
就目前而言,偏執狂需要找到一些方法來模仿隔離環境,如果他們喜歡與“推”相同的保護。例如。在內部鏡像的情況下,分兩步執行鏡像,一個用于獲取不受信任的對象,然后執行第二次“推送”(將使用隔離區)到另一個內部存儲庫,并讓內部客戶端使用此推送到存儲庫,或禁止內部提取,只有在完整的“fsck”運行時才允許它們(并且在此期間沒有發生新的提取)。
```
transfer.hideRefs
```
字符串`receive-pack`和`upload-pack`用于決定從其初始廣告中省略哪些引用。使用多個定義指定多個前綴字符串。排除了此變量值中列出的層次結構下的引用,并在響應`git push`或`git fetch`時隱藏。有關此配置的程序特定版本,請參閱`receive.hideRefs`和`uploadpack.hideRefs`。
您還可以在引用名稱前包含`!`以取消該條目,顯式公開它,即使之前的條目將其標記為隱藏。如果您有多個hideRefs值,則后面的條目會覆蓋之前的條目(并且更具體的配置文件中的條目會覆蓋不太具體的條目)。
如果正在使用名稱空間,則在與`transfer.hiderefs`模式匹配之前,會從每個引用中刪除名稱空間前綴。例如,如果在`transfer.hideRefs`中指定`refs/heads/master`并且當前名稱空間是`foo`,則廣告中省略`refs/namespaces/foo/refs/heads/master`,但`refs/heads/master`和`refs/namespaces/bar/refs/heads/master`仍然被宣傳為所謂的“有”行。為了在剝離之前匹配refs,在ref名稱前面添加`^`。如果組合`!`和`^`,則必須首先指定`!`。
即使你隱藏引用,客戶端仍然可以通過 [gitnamespaces [7]](https://git-scm.com/docs/gitnamespaces) 手冊頁的“安全”部分中描述的技術竊取目標對象;最好將私有數據保存在單獨的存儲庫中。
```
transfer.unpackLimit
```
如果未設置`fetch.unpackLimit`或`receive.unpackLimit`,則使用此變量的值。默認值為100。
```
uploadarchive.allowUnreachable
```
如果為true,則允許客戶端使用`git archive --remote`請求任何樹,無論是否可以從ref提示中訪問。有關詳細信息,請參閱 [git-upload-archive [1]](https://git-scm.com/docs/git-upload-archive) 的“安全”部分中的討論。默認為`false`。
```
uploadpack.hideRefs
```
此變量與`transfer.hideRefs`相同,但僅適用于`upload-pack`(因此僅影響提取,而不影響推送)。嘗試通過`git fetch`獲取隱藏的引用將失敗。另見`uploadpack.allowTipSHA1InWant`。
```
uploadpack.allowTipSHA1InWant
```
當`uploadpack.hideRefs`生效時,允許`upload-pack`接受一個獲取請求,該請求在隱藏引用的尖端請求一個對象(默認情況下,這樣的請求被拒絕)。另見`uploadpack.hideRefs`。即使這是錯誤的,客戶端也可以通過 [gitnamespaces [7]](https://git-scm.com/docs/gitnamespaces) 手冊頁的“SECURITY”部分中描述的技術竊取對象;最好將私有數據保存在單獨的存儲庫中。
```
uploadpack.allowReachableSHA1InWant
```
允許`upload-pack`接受一個獲取請求,該請求要求從任何ref tip可以訪問的對象。但是,請注意,計算對象可達性在計算上是昂貴的。默認為`false`。即使這是錯誤的,客戶端也可以通過 [gitnamespaces [7]](https://git-scm.com/docs/gitnamespaces) 手冊頁的“SECURITY”部分中描述的技術竊取對象;最好將私有數據保存在單獨的存儲庫中。
```
uploadpack.allowAnySHA1InWant
```
允許`upload-pack`接受一個請求任何對象的獲取請求。默認為`false`。
```
uploadpack.keepAlive
```
當`upload-pack`啟動`pack-objects`時,`pack-objects`準備包時可能會有靜音期。通常它會輸出進度信息,但如果`--quiet`用于獲取,`pack-objects`將一直輸出,直到數據包數據開始。一些客戶端和網絡可能會認為服務器掛起并放棄。設置此選項會指示`upload-pack`每`uploadpack.keepAlive`秒發送一個空的keepalive數據包。將此選項設置為0會完全禁用keepalive數據包。默認值為5秒。
```
uploadpack.packObjectsHook
```
如果設置了此選項,當`upload-pack`運行`git pack-objects`為客戶端創建packfile時,它將運行此shell命令。它_將_運行的`pack-objects`命令和參數(包括開頭的`git pack-objects`)附加到shell命令。掛鉤的stdin和stdout被視為`pack-objects`本身運行。即,`upload-pack`將為`pack-objects`提供輸入到鉤子,并期望在stdout上完成一個packfile。
請注意,如果在存儲庫級配置中看到此配置變量,則會忽略此配置變量(這是針對從不受信任的存儲庫獲取的安全措施)。
```
uploadpack.allowFilter
```
如果設置了此選項,`upload-pack`將支持部分克隆和部分提取對象過濾。
```
uploadpack.allowRefInWant
```
如果設置此選項,`upload-pack`將支持協議版本2 `fetch`命令的`ref-in-want`功能。此功能旨在使負載平衡的服務器受益,因為復制延遲可能無法查看其ref引用的OID的相同視圖。
```
url.<base>.insteadOf
```
任何以此值開頭的網址都會被重寫,而不是以< base>開頭。如果某些站點提供大量存儲庫,并使用多種訪問方法為其提供服務,并且某些用戶需要使用不同的訪問方法,則此功能允許人們指定任何等效的URL并讓Git自動將URL重寫為特定用戶的最佳替代方案,即使對于網站上前所未見的存儲庫也是如此。當多個insteadOf字符串與給定的URL匹配時,使用最長匹配。
請注意,任何協議限制都將應用于重寫的URL。如果重寫更改URL以使用自定義協議或遠程幫助程序,則可能需要調整`protocol.*.allow`配置以允許請求。特別是,您希望用于子模塊的協議必須設置為`always`而不是默認的`user`。參見上面`protocol.allow`的描述。
```
url.<base>.pushInsteadOf
```
任何以此值開頭的URL都不會被推送到;相反,它將被重寫為以< base>開頭,并且結果URL將被推送到。如果某些站點提供大量存儲庫,并使用多種訪問方法為其提供服務,其中一些方法不允許推送,則此功能允許人們指定只讀URL并讓Git自動使用適當的URL進行推送,即使對于網站上前所未見的存儲庫也是如此。當多個pushInsteadOf字符串與給定的URL匹配時,將使用最長匹配。如果一個遙控器有一個明確的pushurl,Git將忽略該遙控器的這個設置。
```
user.email
```
您的電子郵件地址將記錄在任何新創建的提交中。可以被`GIT_AUTHOR_EMAIL`,`GIT_COMMITTER_EMAIL`和`EMAIL`環境變量覆蓋。參見 [git-commit-tree [1]](https://git-scm.com/docs/git-commit-tree) 。
```
user.name
```
您的全名將記錄在任何新創建的提交中。可以被`GIT_AUTHOR_NAME`和`GIT_COMMITTER_NAME`環境變量覆蓋。參見 [git-commit-tree [1]](https://git-scm.com/docs/git-commit-tree) 。
```
user.useConfigOnly
```
指示Git避免嘗試猜測`user.email`和`user.name`的默認值,而只是從配置中檢索值。例如,如果您有多個電子郵件地址并希望為每個存儲庫使用不同的電子郵件地址,那么將此配置選項設置為全局配置中的`true`以及名稱,Git將提示您之前設置電子郵件在新克隆的存儲庫中進行新提交。默認為`false`。
```
user.signingKey
```
如果 [git-tag [1]](https://git-scm.com/docs/git-tag) 或 [git-commit [1]](https://git-scm.com/docs/git-commit) 在創建簽名標簽或提交時未選擇您想要的密鑰,則可以覆蓋默認選擇用這個變量。此選項未更改地傳遞給gpg的--local-user參數,因此您可以使用gpg支持的任何方法指定密鑰。
```
versionsort.prereleaseSuffix (deprecated)
```
`versionsort.suffix`的棄用別名。如果設置了`versionsort.suffix`,則忽略。
```
versionsort.suffix
```
即使在 [git-tag [1]](https://git-scm.com/docs/git-tag) 中使用版本排序,具有相同基本版本但不同后綴的標記名仍然按字典順序排序,例如,在主要版本之后出現的預發布標簽中(例如“1.0”之后的“1.0-rc1”)。可以指定此變量以確定具有不同后綴的標簽的排序順序。
通過在此變量中指定單個后綴,包含該后綴的任何標記名將出現在相應的主要版本之前。例如。如果變量設置為“-rc”,那么所有“1.0-rcX”標簽將出現在“1.0”之前。如果指定多次,每個后綴一次,則配置中的后綴順序將確定具有這些后綴的標記名的排序順序。例如。如果“-pre”出現在配置中的“-rc”之前,那么所有“1.0-preX”標簽將在任何“1.0-rcX”標簽之前列出。主釋放標簽相對于具有各種后綴的標簽的放置可以通過在這些其他后綴中指定空后綴來確定。例如。如果后綴“-rc”,“”,“ - hck”和“-bfs”按此順序出現在配置中,則首先列出所有“v4.8-rcX”標簽,然后列出“v4.8”,然后是“v4.8-ckX”,最后是“v4.8-bfsX”。
如果多個后綴匹配相同的標記名,則該標記名將根據從標記名中最早的位置開始的后綴進行排序。如果多個不同的匹配后綴從最早的位置開始,則該標記名將根據這些后綴中最長的一個進行排序。如果它們在多個配置文件中,則不確定不同后綴之間的排序順序。
```
web.browser
```
指定某些命令可能使用的Web瀏覽器。目前只有 [git-instaweb [1]](https://git-scm.com/docs/git-instaweb) 和 [git-help [1]](https://git-scm.com/docs/git-help) 可以使用它。
```
worktree.guessRemote
```
如果未指定分支且既不使用`-b`也不使用`-B`和`--detach`,則`git worktree add`默認為從HEAD創建新分支。如果`worktree.guessRemote`設置為true,`worktree add`會嘗試查找名稱與新分支名稱唯一匹配的遠程跟蹤分支。如果存在這樣的分支,則將其簽出并設置為新分支的“上游”。如果找不到這樣的匹配,則回退到從當前HEAD創建新分支。
## BUGS
使用不推薦使用的`[section.subsection]`語法時,如果子節中至少有一個大寫字符,則更改值將導致添加多行鍵而不是更改。例如,當配置看起來像
```
[section.subsection]
key = value1
```
并運行`git config section.Subsection.key value2`
```
[section.subsection]
key = value1
key = value2
```
## GIT
部分 [git [1]](https://git-scm.com/docs/git) 套件
- git
- git-config
- git-help
- git-init
- git-clone
- git-add
- git-status
- git-diff
- git-commit
- git-reset
- git-rm
- git-mv
- git-branch
- git-checkout
- git-merge
- git-mergetool
- git-log
- git-stash
- git-tag
- git-worktree
- git-fetch
- git-pull
- git-push
- git-remote
- git-submodule
- git-show
- git-log
- git-shortlog
- git-describe
- git-apply
- git-cherry-pick
- git-rebase
- git-revert
- git-bisect
- git-blame
- git-grep
- gitattributes
- giteveryday
- gitglossary
- githooks
- gitignore
- gitmodules
- gitrevisions
- gittutorial
- gitworkflows
- git-am
- git-format-patch
- git-send-email
- git-request-pull
- git-svn
- git-fast-import
- git-clean
- git-gc
- git-fsck
- git-reflog
- git-filter-branch
- git-instaweb
- git-archive
- git-bundle
- git-daemon
- git-update-server-info
- git-cat-file
- git-check-ignore
- git-checkout-index
- git-commit-tree
- git-count-objects
- git-diff-index
- git-for-each-ref
- git-hash-object
- git-ls-files
- git-merge-base
- git-read-tree
- git-rev-list
- git-rev-parse
- git-show-ref
- git-symbolic-ref
- git-update-index
- git-update-ref
- git-verify-pack
- git-write-tree