設定與配置
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢視與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
-
2.47.0
10/06/24
-
2.46.2
09/23/24
-
2.46.1
09/13/24
-
2.46.0
07/29/24
- 2.45.1 → 2.45.2 無變更
-
2.45.0
04/29/24
- 2.44.1 → 2.44.2 無變更
-
2.44.0
02/23/24
- 2.43.2 → 2.43.5 無變更
-
2.43.1
02/09/24
-
2.43.0
11/20/23
- 2.42.2 → 2.42.3 無變更
-
2.42.1
11/02/23
-
2.42.0
08/21/23
- 2.41.1 → 2.41.2 無變更
-
2.41.0
06/01/23
- 2.40.1 → 2.40.3 無變更
-
2.40.0
03/12/23
- 2.39.1 → 2.39.5 無變更
-
2.39.0
12/12/22
- 2.38.3 → 2.38.5 無變更
-
2.38.2
12/11/22
-
2.38.1
10/07/22
-
2.38.0
10/02/22
- 2.37.5 → 2.37.7 無變更
-
2.37.4
10/06/22
- 2.37.3 無變更
-
2.37.2
08/11/22
- 2.37.1 無變更
-
2.37.0
06/27/22
- 2.36.4 → 2.36.6 無變更
-
2.36.3
10/06/22
-
2.36.2
06/23/22
- 2.36.1 無變更
-
2.36.0
04/18/22
- 2.35.6 → 2.35.8 無變更
-
2.35.5
10/06/22
-
2.35.4
06/23/22
-
2.35.3
04/13/22
-
2.35.2
03/23/22
- 2.35.1 無變更
-
2.35.0
01/24/22
- 2.34.6 → 2.34.8 無變更
-
2.34.5
10/06/22
-
2.34.4
06/23/22
-
2.34.3
04/13/22
-
2.34.2
03/23/22
- 2.34.1 無變更
-
2.34.0
11/15/21
- 2.33.6 → 2.33.8 無變更
-
2.33.5
10/06/22
-
2.33.4
06/23/22
-
2.33.3
04/13/22
-
2.33.2
03/23/22
-
2.33.1
10/12/21
-
2.33.0
08/16/21
- 2.32.5 → 2.32.7 無變更
-
2.32.4
10/06/22
-
2.32.3
06/23/22
-
2.32.2
04/13/22
-
2.32.1
03/23/22
-
2.32.0
06/06/21
- 2.31.6 → 2.31.8 無變更
-
2.31.5
10/06/22
-
2.31.4
06/23/22
-
2.31.3
04/13/22
-
2.31.2
03/23/22
-
2.31.1
03/26/21
-
2.31.0
03/15/21
- 2.30.7 → 2.30.9 無變更
-
2.30.6
10/06/22
-
2.30.5
06/23/22
-
2.30.4
04/13/22
-
2.30.3
03/23/22
- 2.30.2 無變更
-
2.30.1
02/08/21
-
2.30.0
12/27/20
- 2.29.1 → 2.29.3 無變更
-
2.29.0
10/19/20
- 2.28.1 無變更
-
2.28.0
07/27/20
- 2.27.1 無變更
-
2.27.0
06/01/20
- 2.26.1 → 2.26.3 無變更
-
2.26.0
03/22/20
- 2.25.3 → 2.25.5 無變更
-
2.25.2
03/17/20
-
2.25.1
02/17/20
-
2.25.0
01/13/20
- 2.24.1 → 2.24.4 無變更
-
2.24.0
11/04/19
- 2.23.1 → 2.23.4 無變更
-
2.23.0
08/16/19
- 2.22.2 → 2.22.5 無變更
-
2.22.1
08/11/19
-
2.22.0
06/07/19
- 2.21.1 → 2.21.4 無變更
-
2.21.0
02/24/19
- 2.20.1 → 2.20.5 無變更
-
2.20.0
12/09/18
- 2.19.3 → 2.19.6 無變更
-
2.19.2
11/21/18
- 2.19.1 無變更
-
2.19.0
09/10/18
- 2.18.1 → 2.18.5 無變更
-
2.18.0
06/21/18
- 2.17.1 → 2.17.6 無變更
-
2.17.0
04/02/18
-
2.16.6
12/06/19
-
2.15.4
12/06/19
-
2.14.6
12/06/19
-
2.13.7
05/22/18
-
2.12.5
09/22/17
-
2.11.4
09/22/17
-
2.10.5
09/22/17
-
2.9.5
07/30/17
-
2.8.6
07/30/17
-
2.7.6
07/30/17
-
2.6.7
05/05/17
-
2.5.6
05/05/17
-
2.4.12
05/05/17
-
2.3.10
09/28/15
-
2.2.3
09/04/15
-
2.1.4
12/17/14
-
2.0.5
12/17/14
概要
git config list [<file-option>] [<display-option>] [--includes] git config get [<file-option>] [<display-option>] [--includes] [--all] [--regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name> git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value> git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> <value> git config rename-section [<file-option>] <old-name> <new-name> git config remove-section [<file-option>] <name> git config edit [<file-option>] git config [<file-option>] --get-colorbool <name> [<stdout-is-tty>]
描述
您可以使用此指令查詢/設定/取代/取消設定選項。名稱實際上是以點分隔的區段和鍵,並且值將會被轉義。
可以使用 --append
選項將多行新增至選項。如果您想要更新或取消設定可以在多行出現的選項,則需要提供 value-pattern
(除非給定 --fixed-value
選項,否則它是一個擴展正規表示式)。只有符合模式的現有值會被更新或取消設定。如果您想要處理不符合模式的行,只需在前面加上一個驚嘆號(另請參閱 範例),但請注意,這僅在未使用 --fixed-value
選項時才有效。
--type=<type>
選項指示 git config 確保傳入和傳出的值可以在給定的 <type> 下進行正規化。如果沒有給定 --type=<type>
,則不會執行正規化。呼叫者可以使用 --no-type
取消設定現有的 --type
指定符。
預設情況下,讀取時,會從系統、全域和儲存庫本機設定檔讀取值,並且可以使用選項 --system
、--global
、--local
、--worktree
和 --file <filename>
來告知指令僅從該位置讀取(請參閱 檔案)。
寫入時,預設情況下,新值會寫入儲存庫本機設定檔,並且可以使用選項 --system
、--global
、--worktree
、--file <filename>
來告知指令寫入該位置(您可以說 --local
,但那是預設值)。
此指令會在錯誤時失敗並傳回非零狀態。一些退出代碼為:
-
區段或鍵無效 (ret=1)、
-
未提供區段或名稱 (ret=2)、
-
設定檔無效 (ret=3)、
-
設定檔無法寫入 (ret=4)、
-
您嘗試取消設定不存在的選項 (ret=5)、
-
您嘗試取消設定/設定多行符合的選項 (ret=5),或
-
您嘗試使用無效的正規表示式 (ret=6)。
成功時,指令會傳回退出代碼 0。
可以使用 git help --config
指令取得所有可用設定變數的清單。
指令
- list
-
列出設定檔中設定的所有變數及其值。
- get
-
發出指定的鍵的值。如果鍵在設定中多次出現,則發出最後一個值。如果指定了
--all
,則發出與鍵關聯的所有值。如果鍵不存在,則傳回錯誤代碼 1。 - set
-
為一個或多個設定選項設定值。預設情況下,此指令拒絕寫入多值設定選項。傳遞
--all
將會使用新值取代所有多值設定選項,而--value=
將會取代所有其值符合給定模式的設定選項。 - unset
-
取消設定一個或多個設定選項的值。預設情況下,此指令拒絕取消設定多值鍵。傳遞
--all
將會取消設定所有多值設定選項,而--value
將會取消設定所有其值符合給定模式的設定選項。 - rename-section
-
將給定的區段重新命名為新的名稱。
- remove-section
-
從設定檔中移除給定的區段。
- edit
-
開啟編輯器以修改指定的設定檔;可以是
--system
、--global
、--local
(預設)、--worktree
或--file <config-file>
。
選項
- --replace-all
-
預設行為是最多取代一行。這會取代符合鍵(以及可選的
value-pattern
)的所有行。 - --append
-
在不變更任何現有值的情況下,將新行新增至選項。這與在
set
中提供 --value=^$ 相同。 - --comment <message>
-
在新行或修改行的末尾附加註解。
If _<message>_ begins with one or more whitespaces followed by "#", it is used as-is. If it begins with "#", a space is prepended before it is used. Otherwise, a string " # " (a space followed by a hash followed by a space) is prepended to it. And the resulting string is placed immediately after the value defined for the variable. The _<message>_ must not contain linefeed characters (no multi-line comments are permitted).
- --all
-
使用
get
時,傳回多值鍵的所有值。 - --regexp
-
使用
get
時,將名稱解譯為正規表示式。正規表示式比對目前是區分大小寫的,並且針對鍵的正規化版本完成,其中區段和變數名稱會轉換為小寫,但子區段名稱則不會。 - --url=<URL>
-
當給定一個由兩部分組成的 <name>,如 <section>.<key> 時,則傳回 <section>.<URL>.<key> 的值,其 <URL> 部分與給定的 URL 最佳比對(如果不存在此類鍵,則會使用 <section>.<key> 的值作為回退)。當只給定 <section> 作為名稱時,則對區段中的所有鍵執行此操作,並列出它們。如果找不到值,則傳回錯誤代碼 1。
- --global
-
對於寫入選項:寫入全域
~/.gitconfig
檔案,而不是儲存庫.git/config
,如果此檔案存在且~/.gitconfig
檔案不存在,則寫入$XDG_CONFIG_HOME/git/config
檔案。對於讀取選項:僅從全域
~/.gitconfig
和$XDG_CONFIG_HOME/git/config
讀取,而不是從所有可用的檔案讀取。另請參閱 檔案。
- --system
-
對於寫入選項:寫入系統範圍的
$(prefix)/etc/gitconfig
,而不是儲存庫.git/config
。對於讀取選項:僅從系統範圍的
$(prefix)/etc/gitconfig
讀取,而不是從所有可用的檔案讀取。另請參閱 檔案。
- --local
-
對於寫入選項:寫入儲存庫
.git/config
檔案。這是預設行為。對於讀取選項:僅從儲存庫
.git/config
讀取,而不是從所有可用的檔案讀取。另請參閱 檔案。
- --worktree
-
與
--local
類似,但如果啟用了extensions.worktreeConfig
,則會從$GIT_DIR/config.worktree
讀取或寫入。否則,其行為與--local
相同。請注意,對於主要的工作樹,$GIT_DIR
等於$GIT_COMMON_DIR
,但對於其他工作樹,其形式為$GIT_DIR/worktrees/<id>/
。請參閱 git-worktree[1] 以了解如何啟用extensions.worktreeConfig
。 - -f <組態檔>
- --file <組態檔>
-
對於寫入選項:寫入到指定的檔案,而不是儲存庫的
.git/config
。對於讀取選項:僅從指定的檔案讀取,而不是從所有可用的檔案讀取。
另請參閱 檔案。
- --blob <blob>
-
與
--file
類似,但使用指定的 blob 而不是檔案。例如,您可以使用 *master:.gitmodules* 從 master 分支中的 *.gitmodules* 檔案讀取值。有關拼寫 blob 名稱的更完整方式列表,請參閱 gitrevisions[7] 中的「指定修訂版本」章節。 - --fixed-value
-
當與
value-pattern
引數一起使用時,將value-pattern
視為精確的字串,而不是正規表示式。這會將符合條件的名稱/值配對限制為僅限於值與value-pattern
完全相等的情況。 - --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
的組態變數名稱。 - --show-origin
-
使用來源類型(檔案、標準輸入、blob、命令列)和實際來源(組態檔路徑、ref 或 blob id,如果適用)來擴充所有查詢的組態選項的輸出。
- --show-scope
-
與
--show-origin
類似,它使用該值的範圍(工作樹、本機、全域、系統、命令)來擴充所有查詢的組態選項的輸出。 - --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
作為回退。 - --[no-]includes
-
在查閱值時,遵循組態檔中的
include.*
指示。當給定特定檔案時(例如,使用--file
、--global
等)預設為off
,而當搜尋所有組態檔時則預設為on
。 - --default <value>
-
當使用
get
且找不到請求的變數時,行為如同 <value> 是指派給該變數的值。
已棄用的模式
以下模式已棄用,建議使用子命令。建議遷移到新語法。
- git config <name>
-
已由
git config get <name>
取代。 - git config <name> <value> [<value-pattern>]
-
已由
git config set [--value=<pattern>] <name> <value>
取代。 - -l
- --list
-
已由
git config list
取代。 - --get <name> [<value-pattern>]
-
已由
git config get [--value=<pattern>] <name>
取代。 - --get-all <name> [<value-pattern>]
-
已由
git config get [--value=<pattern>] --all <name>
取代。 - --get-regexp <name-regexp>
-
已由
git config get --all --show-names --regexp <name-regexp>
取代。 - --get-urlmatch <name> <URL>
-
已由
git config get --all --show-names --url=<URL> <name>
取代。 - --get-color <name> [<default>]
-
已由
git config get --type=color [--default=<default>] <name>
取代。 - --add <name> <value>
-
已由
git config set --append <name> <value>
取代。 - --unset <name> [<value-pattern>]
-
已由
git config unset [--value=<pattern>] <name>
取代。 - --unset-all <name> [<value-pattern>]
-
已由
git config unset [--value=<pattern>] --all <name>
取代。 - --rename-section <old-name> <new-name>
-
已由
git config rename-section <old-name> <new-name>
取代。 - --remove-section <name>
-
已由
git config remove-section <name>
取代。 - -e
- --edit
-
已由
git config edit
取代。
檔案
預設情況下,git config 將從多個檔案讀取組態選項
- $(prefix)/etc/gitconfig
-
系統範圍的組態檔。
- $XDG_CONFIG_HOME/git/config
- ~/.gitconfig
-
使用者特定的組態檔。當未設定或為空的 XDG_CONFIG_HOME 環境變數時,$HOME/.config/ 會用作 $XDG_CONFIG_HOME。
這些也稱為「全域」組態檔。如果兩個檔案都存在,則會按照上述順序讀取這兩個檔案。
- $GIT_DIR/config
-
儲存庫特定的組態檔。
- $GIT_DIR/config.worktree
-
這是可選的,僅當 $GIT_DIR/config 中存在
extensions.worktreeConfig
時才會搜尋。
您也可以在使用任何 git 命令時使用 -c
選項來提供其他組態參數。有關詳細資訊,請參閱 git[1]。
選項將從所有可用的這些檔案中讀取。如果遺失或無法讀取全域或系統範圍的組態檔,則會忽略它們。如果遺失或無法讀取儲存庫組態檔,則 git config 將以非零錯誤代碼結束。如果檔案無法讀取,則會產生錯誤訊息,但如果遺失則不會。
會按照上述順序讀取檔案,最後找到的值會優先於較早讀取的值。當採用多個值時,將會使用來自所有檔案的金鑰的所有值。
預設情況下,選項只會寫入儲存庫特定的組態檔。請注意,這也會影響 set
和 unset
之類的選項。git config 一次只會變更一個檔案。
您可以透過使用 --file
選項指定檔案的路徑,或使用 --system
、--global
、--local
或 --worktree
指定組態範圍,來限制從哪些組態來源讀取或寫入。如需更多資訊,請參閱上方的 選項。
範圍
每個組態來源都屬於一個組態範圍。範圍包括
- system
-
$(prefix)/etc/gitconfig
- global
-
$XDG_CONFIG_HOME/git/config
~/.gitconfig
- local
-
$GIT_DIR/config
- worktree
-
$GIT_DIR/config.worktree
- command
-
GIT_CONFIG_{COUNT,KEY,VALUE} 環境變數(請參閱下方的 環境)
-c
選項
除了 command 之外,每個範圍都對應一個命令列選項:--system
、--global
、--local
、--worktree
。
讀取選項時,指定範圍只會從該範圍內的文件讀取選項。寫入選項時,指定範圍會寫入該範圍內的文件(而不是儲存庫特定的組態檔)。請參閱上方的 選項 以取得完整說明。
大多數組態選項無論定義在何種範圍都有效,但有些選項僅在特定範圍內有效。請參閱各選項的文件以了解完整詳細資訊。
環境變數
另請參閱 檔案。
- GIT_CONFIG_COUNT
- GIT_CONFIG_KEY_<n>
- GIT_CONFIG_VALUE_<n>
-
如果 GIT_CONFIG_COUNT 設定為正數,則所有環境變數配對 GIT_CONFIG_KEY_<n> 和 GIT_CONFIG_VALUE_<n>,直到該數字為止,都會被加入到程序的執行時期組態中。組態配對從零開始索引。任何遺失的鍵或值都會被視為錯誤。空的 GIT_CONFIG_COUNT 會被視為與 GIT_CONFIG_COUNT=0 相同,也就是不會處理任何配對。這些環境變數會覆蓋組態檔案中的值,但會被透過
git -c
傳遞的任何明確選項覆蓋。這對於需要以通用組態產生多個 git 命令,但又不能依賴組態檔案的情況很有用,例如在撰寫腳本時。
- GIT_CONFIG
-
如果沒有提供
--file
選項給git config
,則使用GIT_CONFIG
給定的檔案,如同透過--file
提供一樣。此變數對其他 Git 命令沒有影響,主要用於歷史相容性;通常沒有理由使用它來取代--file
選項。
範例
給定一個類似這樣的 .git/config
# # This is the config file, and # a '#' or ';' character indicates # a comment # ; 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 set core.filemode true
假設的 proxy 命令條目實際上具有一個後綴,以辨別它們適用於哪個 URL。以下是如何將 kernel.org 的條目變更為「ssh」。
% git config set --value='for kernel.org$' core.gitproxy '"ssh" for kernel.org'
這確保只會替換 kernel.org 的鍵/值配對。
要刪除 renames 的條目,請執行以下操作
% git config unset diff.renames
如果你想要刪除多值變數 (如上面的 core.gitproxy) 的條目,則必須提供一個正規表示式,以精確匹配其中一行的值。
要查詢給定鍵的值,請執行以下操作
% git config get core.filemode
或者,要查詢多值變數
% git config get --value="for kernel.org$" core.gitproxy
如果你想知道多值變數的所有值,請執行以下操作
% git config get --all --show-names core.gitproxy
如果你喜歡冒險,可以使用以下命令將所有 core.gitproxy 替換為新的值
% git config set --all core.gitproxy ssh
但是,如果你真的只想替換預設 proxy 的行,也就是沒有「for …」後綴的行,請執行類似以下的操作
% git config set --value='! for ' core.gitproxy ssh
要實際匹配只帶有驚嘆號的值,你必須執行以下操作
% git config set --value='[!]' section.key value
要添加新的 proxy,而不變更任何現有的 proxy,請使用
% git config set --append core.gitproxy '"proxy-command" for example.com'
一個在你的腳本中使用組態中自訂顏色的範例
#!/bin/sh WS=$(git config get --type=color --default="blue reverse" color.diff.whitespace) RESET=$(git config get --type=color --default="reset" "") echo "${WS}your whitespace color or blue reverse${RESET}"
對於 https://weak.example.com
中的 URL,http.sslVerify
設定為 false,而對於所有其他 URL,則設定為 true
% git config get --type=bool --url=https://good.example.com http.sslverify true % git config get --type=bool --url=https://weak.example.com http.sslverify false % git config get --url=https://weak.example.com http http.cookieFile /tmp/cookie.txt http.sslverify false
組態檔
Git 組態檔包含許多會影響 Git 命令行為的變數。每個儲存庫中的 .git/config
和可選的 config.worktree
檔案(請參閱 git-worktree[1] 的「組態檔」章節)用於儲存該儲存庫的組態,而 $HOME/.gitconfig
用於儲存每個使用者的組態,作為 .git/config
檔案的後備值。可以使用 /etc/gitconfig
檔案來儲存系統範圍的預設組態。
Git 的底層命令和瓷器命令都會使用組態變數。變數分為多個區段,其中變數本身的完整變數名稱是最後一個以點分隔的片段,而區段名稱是最後一個點之前的所有內容。變數名稱不區分大小寫,只允許字母數字字符和 -
,並且必須以字母字符開頭。某些變數可能會出現多次;我們稱該變數為多值變數。
語法
語法相當靈活且寬鬆。空白字符(在此上下文中是指空格字符 (SP) 和水平制表符 (HT))大多被忽略。# 和 ; 字符會開始註解到行尾。空白行會被忽略。
檔案由區段和變數組成。區段以方括號中的區段名稱開始,並持續到下一個區段開始。區段名稱不區分大小寫。區段名稱中只允許字母數字字符、-
和 .
。每個變數都必須屬於某個區段,這表示在第一次設定變數之前必須有一個區段標頭。
區段可以進一步分為子區段。若要開始子區段,請在區段標頭中,將子區段的名稱放在雙引號中,並與區段名稱以空格分隔,如下例所示
[section "subsection"]
子區段名稱區分大小寫,並且可以包含除換行符號和空位元組以外的任何字符。雙引號 "
和反斜線可以分別透過將其轉義為 \"
和 \\
來包含。反斜線後面的其他字符在讀取時會被丟棄;例如,\t
會被讀取為 t
,而 \0
會被讀取為 0
。區段標頭不能跨越多行。變數可以直接屬於區段或給定的子區段。如果你有 [section "subsection"]
,則可以有 [section]
,但你不需要這樣做。
還有一個已棄用的 [section.subsection]
語法。使用此語法,子區段名稱會轉換為小寫,並且也會以區分大小寫的方式進行比較。這些子區段名稱遵循與區段名稱相同的限制。
所有其他行(以及區段標頭之後的剩餘行)都被識別為設定變數,形式為 name = value(或僅為 name,這是表示變數為布林值「true」的簡寫)。變數名稱不區分大小寫,只允許字母數字字符和 -
,並且必須以字母字符開頭。
丟棄 name
、=
和 value
周圍的空白字符。保留 value 內的內部空白字符。丟棄以 #
或 ;
開頭並延伸到行尾的註解。定義值的行可以透過在結尾處使用反斜線 (\
) 來繼續到下一行;丟棄反斜線和行尾字符。
如果 value
需要包含開頭或結尾的空白字符,則必須將其括在雙引號 ("
) 中。在雙引號內,雙引號 ("
) 和反斜線 (\
) 字符必須轉義:針對 "
使用 \"
,針對 \
使用 \\
。
會識別以下轉義序列(除了 \"
和 \\
之外):\n
代表換行符號 (NL)、\t
代表水平制表符 (HT, TAB) 和 \b
代表退格鍵 (BS)。其他字符轉義序列(包括八進位轉義序列)無效。
包含
include
和 includeIf
區段允許你從其他來源包含組態指令。這些區段的行為彼此相同,但 includeIf
區段可能會在其條件評估為 false 時被忽略;請參閱下方的「條件包含」。
你可以透過將特殊 include.path
(或 includeIf.*.path
) 變數設定為要包含的檔案名稱,從另一個檔案包含組態檔。該變數採用路徑名稱作為其值,並且需要進行波浪符號擴充。這些變數可以多次給定。
包含的檔案內容會立即插入,就像它們位於包含指令的位置一樣。如果變數的值是相對路徑,則該路徑會被視為相對於包含指令的組態檔。請參閱下方的範例。
條件包含
你可以透過將 includeIf.<condition>.path
變數設定為要包含的檔案名稱,從另一個檔案有條件地包含組態檔。
條件以一個關鍵字開始,後面接著一個冒號和一些資料,其格式和含義取決於關鍵字。支援的關鍵字如下:
-
gitdir
-
關鍵字
gitdir:
後面的資料會被用作 glob 模式。如果 .git 目錄的位置與模式相符,則符合包含條件。.git 位置可能會自動偵測到,或是來自
$GIT_DIR
環境變數。如果儲存庫是透過 .git 檔案自動偵測到的(例如,來自子模組或連結的工作樹),則 .git 位置會是 .git 目錄所在的最終位置,而不是 .git 檔案所在的位置。該模式可以包含標準的 globbing 通配符號和另外兩個,
**/
和/**
,它們可以匹配多個路徑組件。請參閱 gitignore[5] 以了解詳細資訊。為方便起見-
如果模式以
~/
開頭,則~
會被替換為環境變數HOME
的內容。 -
如果模式以
./
開頭,則會以包含目前組態檔的目錄取代。 -
如果模式沒有以
~/
、./
或/
開頭,則會自動在前面加上**/
。例如,模式foo/bar
會變成**/foo/bar
,並且會匹配/any/path/to/foo/bar
。 -
如果模式以
/
結尾,則會自動加上**
。例如,模式foo/
會變成foo/**
。換句話說,它會匹配「foo」和內部的一切,遞迴地。
-
-
gitdir/i
-
這與
gitdir
相同,不同之處在於匹配是以不區分大小寫的方式完成的(例如,在不區分大小寫的檔案系統上) -
onbranch
-
關鍵字
onbranch:
後面的資料會被視為一個帶有標準 globbing 萬用字元的模式,以及兩個額外的萬用字元**/
和/**
,它們可以匹配多個路徑組成部分。如果我們在一個工作目錄中,而當前檢出的分支名稱與該模式匹配,則符合 include 條件。如果模式以
/
結尾,則會自動添加**
。例如,模式foo/
會變成foo/**
。換句話說,它會匹配所有以foo/
開頭的分支。如果您的分支是階層式組織的,並且您希望將配置套用到該階層中的所有分支,這會很有用。 -
hasconfig:remote.*.url:
-
此關鍵字後面的資料會被視為一個帶有標準 globbing 萬用字元的模式,以及兩個額外的萬用字元
**/
和/**
,它們可以匹配多個組成部分。第一次看到此關鍵字時,將會掃描其餘的設定檔以尋找遠端 URL(不套用任何值)。如果存在至少一個與此模式匹配的遠端 URL,則符合 include 條件。此選項(直接或間接)包含的檔案不允許包含遠端 URL。
請注意,與其他 includeIf 條件不同,解析此條件依賴於在讀取條件時尚未知的資訊。一個典型的用例是此選項存在於系統級或全域級設定中,而遠端 URL 存在於本機級設定中;因此,需要預先掃描以解析此條件。為了避免潛在包含的檔案會影響這些檔案是否可能被包含的雞生蛋蛋生雞的問題,Git 會透過禁止這些檔案影響這些條件的解析來打破循環(因此,禁止它們宣告遠端 URL)。
至於此關鍵字的命名,它是為了與支援更多基於變數的 include 條件的命名方案向前相容,但目前 Git 僅支援上述確切的關鍵字。
關於透過 gitdir
和 gitdir/i
進行匹配的一些其他說明
-
在匹配之前,不會解析
$GIT_DIR
中的符號連結。 -
路徑的符號連結和實際路徑版本都會在
$GIT_DIR
外部進行匹配。例如,如果 ~/git 是指向 /mnt/storage/git 的符號連結,則gitdir:~/git
和gitdir:/mnt/storage/git
都會匹配。在 v2.13.0 中首次發佈此功能時並非如此,當時只會匹配實際路徑版本。想要與此功能的初始版本相容的配置需要指定實際路徑版本或兩個版本。
-
請注意,"../" 並非特殊,並且會按字面匹配,這可能不是您想要的。
範例
# 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 ; include only if we are in a worktree where foo-branch is ; currently checked out [includeIf "onbranch:foo-branch"] path = foo.inc ; include only if a remote with the given URL exists (note ; that such a URL may be provided later in a file or in a ; file read after this file is read, as seen in this example) [includeIf "hasconfig:remote.*.url:https://example.com/**"] path = foo.inc [remote "origin"] url = https://example.com/git
值
許多變數的值都被視為簡單的字串,但有些變數會採用特定類型的值,並且針對如何拼寫它們有相關規則。
- boolean
-
當一個變數被說成採用布林值時,true 和 false 可以接受許多同義詞;這些都是不區分大小寫的。
- integer
-
許多指定各種大小的變數的值可以附加
k
、M
、…等後綴,表示「將數字放大 1024 倍」、「放大 1024x1024 倍」等。 - color
-
採用色彩的變數的值是一個色彩列表(最多兩個,一個用於前景,一個用於背景)和屬性(數量不限),以空格分隔。
接受的基本色彩為
normal
、black
、red
、green
、yellow
、blue
、magenta
、cyan
、white
和default
。第一個給定的色彩是前景;第二個是背景。除了normal
和default
以外的所有基本色彩都有亮色變體,可以透過在色彩前面加上bright
來指定,例如brightred
。色彩
normal
不會對色彩進行任何變更。它與空字串相同,但可以在單獨指定背景色彩時用作前景色彩(例如,「normal red」)。色彩
default
會明確地將色彩重設為終端機的預設值,例如指定已清除的背景。雖然它在不同終端機之間有所差異,但通常與設定為「white black」不同。色彩也可以給定為 0 到 255 之間的數字;這些使用 ANSI 256 色模式(但請注意,並非所有終端機都支援此模式)。如果您的終端機支援,您也可以指定 24 位元 RGB 值,例如十六進位值
#ff0ab3
,或 12 位元 RGB 值,例如#f1b
,這相當於 24 位元色彩#ff11bb
。接受的屬性為
bold
、dim
、ul
、blink
、reverse
、italic
和strike
(用於刪除線或「刪除線」字母)。任何屬性相對於色彩的位置(在之前、之後或之間)並不重要。可以透過在屬性前面加上no
或no-
來關閉特定屬性(例如,noreverse
、no-ul
等)。偽屬性
reset
會在套用指定的色彩之前重設所有色彩和屬性。例如,reset green
將產生綠色前景和沒有任何作用中屬性的預設背景。空的色彩字串完全不會產生色彩效果。這可用於避免為特定元素著色,而不會完全停用色彩。
對於 Git 的預先定義的色彩槽,屬性會在著色輸出的每個項目開始時重設。因此,將
color.decorate.branch
設定為black
會以純black
繪製該分支名稱,即使同一輸出行的前一個項目(例如,log --decorate
輸出中分支名稱列表前的左括號)設定為以bold
或其他屬性繪製。但是,自訂記錄格式可能會進行更複雜和分層的著色,而否定形式可能在其中很有用。 - pathname
-
採用路徑名稱值的變數可以給定一個以 "
~/
" 或 "~user/
" 開頭的字串,並且此類字串會發生通常的波浪號展開:~/
會展開為$HOME
的值,而~user/
會展開為指定使用者的主目錄。如果路徑以
%(prefix)/
開頭,則其餘部分會被解譯為相對於 Git 的「執行時前置字元」的路徑,也就是相對於 Git 本身安裝位置的路徑。例如,%(prefix)/bin/
是指 Git 可執行檔本身所在的目錄。如果 Git 在編譯時沒有執行時前置字元支援,則會改為替換編譯時前置字元。在極少數情況下,需要指定不應展開的文字路徑,則需要在路徑前面加上./
,如下所示:./%(prefix)/bin
。
變數
請注意,此列表並非詳盡無遺,也未必完整。對於特定於指令的變數,您可以在適當的手冊頁中找到更詳細的說明。
其他與 Git 相關的工具可能會而且確實會使用它們自己的變數。在為您自己的工具建立新變數時,請確保它們的名稱與 Git 本身和其他常用工具使用的名稱不衝突,並在您的文件中說明它們。
- add.ignoreErrors
- add.ignore-errors (已棄用)
-
告訴 git add 在由於索引錯誤而無法新增某些檔案時,繼續新增檔案。相當於 git-add[1] 的
--ignore-errors
選項。add.ignore-errors
已棄用,因為它不遵循組態變數的慣用命名約定。 - advice.*
-
這些變數控制旨在幫助新使用者的各種可選幫助訊息。當保持未設定狀態時,Git 會在訊息旁邊提供有關如何抑制該訊息的說明。您可以透過將相應的變數設定為
false
來告知 Git 您已了解問題,並且不再需要特定的幫助訊息。由於它們旨在幫助人類使用者,因此這些訊息會輸出到標準錯誤。當將 Git 作為子程序的工具發現它們具有干擾性時,它們可以在環境中設定
GIT_ADVICE=0
以抑制所有建議訊息。- addEmbeddedRepo
-
當使用者不小心將一個 Git 儲存庫新增到另一個儲存庫中時顯示。
- addEmptyPathspec
-
當使用者在未提供路徑規範參數的情況下執行
git add
時顯示。 - addIgnoredFile
-
當使用者嘗試將忽略的檔案新增到索引時顯示。
- amWorkDir
-
當 git-am[1] 無法套用修補程式檔案時顯示,以告知使用者該檔案的位置。
- ambiguousFetchRefspec
-
當多個遠端的提取參考規範對應到相同的遠端追蹤分支命名空間,並導致分支追蹤設定失敗時顯示。
- checkoutAmbiguousRemoteBranchName
-
當 git-checkout[1] 和 git-switch[1] 的引數含糊地解析為多個遠端上的遠端追蹤分支,而在明確的引數會導致檢出遠端追蹤分支的情況下顯示。請參閱
checkout.defaultRemote
設定變數,了解如何在某些會列印此建議的情況下設定要預設使用的指定遠端。 - commitBeforeMerge
-
當 git-merge[1] 拒絕合併以避免覆寫本機變更時顯示。
- detachedHead
-
當使用者使用 git-switch[1] 或 git-checkout[1] 移動到分離的 HEAD 狀態時顯示,以告知使用者事後如何建立本機分支。
- diverging
-
當無法進行快轉時顯示。
- fetchShowForcedUpdates
-
當 git-fetch[1] 在參考更新後花費很長時間來計算強制更新時顯示,或警告已停用檢查。
- forceDeleteBranch
-
當使用者嘗試刪除一個未完全合併的分支,且未設定強制選項時顯示。
- ignoredHook
-
當 hook 因為未設定為可執行而遭忽略時顯示。
- implicitIdentity
-
當使用者的資訊是從系統使用者名稱和網域名稱推測出來時顯示,以告知使用者如何設定其身分組態。
- mergeConflict
-
當各種指令因衝突而停止時顯示。
- nestedTag
-
當使用者嘗試以遞迴方式標記標籤物件時顯示。
- pushAlreadyExists
-
當 git-push[1] 拒絕不符合快速轉送條件的更新時顯示(例如,標籤)。
- pushFetchFirst
-
當 git-push[1] 拒絕嘗試覆寫指向我們沒有的物件的遠端參考的更新時顯示。
- pushNeedsForce
-
當 git-push[1] 拒絕嘗試覆寫指向不是 commit-ish 的物件的遠端參考,或使遠端參考指向不是 commit-ish 的物件的更新時顯示。
- pushNonFFCurrent
-
當 git-push[1] 因為對目前分支進行非快速轉送更新而失敗時顯示。
- pushNonFFMatching
-
當使用者執行 git-push[1] 並明確推送「符合的參考」(即使用
:
,或指定不是目前分支的 refspec),且導致非快速轉送錯誤時顯示。 - pushRefNeedsUpdate
-
當 git-push[1] 拒絕分支的強制更新,且其遠端追蹤參考有我們本地沒有的更新時顯示。
- pushUnqualifiedRefname
-
當 git-push[1] 放棄嘗試根據來源和目的地參考來推測來源所屬的遠端參考命名空間時顯示,但我們仍然可以建議使用者根據來源物件的類型推送至
refs/heads/*
或refs/tags/*
。 - pushUpdateRejected
-
如果您想要同時停用
pushNonFFCurrent
、pushNonFFMatching
、pushAlreadyExists
、pushFetchFirst
、pushNeedsForce
和pushRefNeedsUpdate
,請將此變數設定為false
。 - rebaseTodoError
-
當編輯 rebase todo 清單後發生錯誤時顯示。
- refSyntax
-
當使用者提供不合法的參考名稱時顯示,以告知使用者參考語法文件。
- resetNoRefresh
-
當 git-reset[1] 在重設後花費超過 2 秒來重新整理索引時顯示,以告知使用者他們可以使用
--no-refresh
選項。 - resolveConflict
-
當衝突阻止執行操作時,由各種指令顯示。
- rmHints
-
當 git-rm[1] 的輸出失敗時顯示,以提供從目前狀態繼續操作的方向。
- sequencerInUse
-
當序列器命令已在進行中時顯示。
- skippedCherryPicks
-
當 git-rebase[1] 跳過已 cherry-pick 到上游分支的提交時顯示。
- sparseIndexExpanded
-
當稀疏索引展開為完整索引時顯示,這很可能是因為在稀疏檢出之外存在一組非預期的檔案。
- statusAheadBehind
-
當 git-status[1] 計算本地參考與其遠端追蹤參考相比的領先/落後計數,且該計算花費的時間超出預期時顯示。如果
status.aheadBehind
為 false 或給定選項--no-ahead-behind
,則不會顯示。 - statusHints
-
在 git-status[1] 的輸出中,在撰寫 git-commit[1] 中的提交訊息時顯示的範本中,以及在切換分支時由 git-switch[1] 或 git-checkout[1] 顯示的說明訊息中,顯示如何從目前狀態繼續操作的方向。
- statusUoption
-
當 git-status[1] 花費超過 2 秒來列舉未追蹤的檔案時顯示,以告知使用者他們可以使用
-u
選項。 - submoduleAlternateErrorStrategyDie
-
當設定為「die」的 submodule.alternateErrorStrategy 選項導致嚴重錯誤時顯示。
- submoduleMergeConflict
-
當遇到非簡單的子模組合併衝突時顯示的建議。
- submodulesNotUpdated
-
當使用者執行因未執行
git submodule update --init
而失敗的子模組命令時顯示。 - suggestDetachingHead
-
當 git-switch[1] 拒絕在沒有明確的
--detach
選項的情況下分離 HEAD 時顯示。 - updateSparsePath
-
當要求 git-add[1] 或 git-rm[1] 更新目前稀疏檢出之外的索引項目時顯示。
- waitingForEditor
-
當 Git 等待編輯器輸入時顯示。例如,當編輯器未在終端機內啟動時相關。
- worktreeAddOrphan
-
當使用者嘗試從無效的參考建立工作樹時顯示,以告知使用者如何改為建立新的未誕生分支。
- alias.*
-
git[1] 命令包裝器的命令別名 - 例如,在定義
alias.last = cat-file commit HEAD
之後,調用git last
等同於git cat-file commit HEAD
。為避免混淆和腳本使用上的問題,會忽略隱藏現有 Git 命令的別名。參數會以空格分隔,支援一般 shell 引號和逸出。可以使用引號對或反斜線來引述它們。請注意,別名的第一個字詞不一定必須是命令。它可以是一個命令列選項,將傳遞到
git
的調用中。特別是,當與-c
一起使用以傳入一次性組態或與-p
一起使用以強制分頁時,這很有用。例如,可以定義loud-rebase = -c commit.verbose=true rebase
,這樣執行git loud-rebase
就會等同於git -c commit.verbose=true rebase
。此外,ps = -p status
將是一個有用的別名,因為git ps
會分頁顯示git status
的輸出,而原始命令不會。如果別名展開以驚嘆號為前綴,則將其視為 shell 命令。例如,定義
alias.new = !gitk --all --not ORIG_HEAD
,調用git new
等同於執行 shell 命令gitk --all --not ORIG_HEAD
。注意-
Shell 命令將從儲存庫的頂層目錄執行,該目錄不一定是目前的目錄。
-
GIT_PREFIX
設定為從原始目前目錄執行git rev-parse --show-prefix
所傳回的值。請參閱 git-rev-parse[1]。 -
Shell 命令別名總是會收到提供給 Git 命令列的任何額外參數作為位置參數。
-
如果您的 shell 別名是包含多個命令(例如在管道中)、引用多個參數或無法處理末尾添加的位置參數的「單行」腳本,則應謹慎處理。例如:呼叫為
git cmd 1 2
的alias.cmd = "!echo $1 | grep $2"
將會執行為 *echo $1 | grep $2 1 2*,這不是您想要的。 -
處理此問題的一個方便方法是在內嵌函數中撰寫腳本操作,然後使用命令列中的任何參數呼叫該函數。例如 `alias.cmd = "!c() { echo $1 | grep $2 ; }; c" 將正確執行先前的範例。
-
設定
GIT_TRACE=1
可以協助您偵錯別名正在執行的命令。
-
-
- am.keepcr
-
如果為 true,git-am 會以參數
--keep-cr
呼叫 git-mailsplit 來處理 mbox 格式的修補程式。在這種情況下,git-mailsplit 不會從以\r\n
結尾的行中移除\r
。可以從命令列給定--no-keep-cr
來覆寫。請參閱 git-am[1]、git-mailsplit[1]。 - am.threeWay
-
預設情況下,如果修補程式無法乾淨地套用,
git am
會失敗。當設定為 true 時,此設定會告知git am
如果修補程式記錄其應套用的 blob 的身分,且我們本地有這些 blob 可用(等同於從命令列給定--3way
選項),則退回到 3 向合併。預設為false
。請參閱 git-am[1]。 - apply.ignoreWhitespace
-
當設定為 change 時,會告知 git apply 忽略空白字元的變更,其方式與
--ignore-space-change
選項相同。當設定為以下其中一個值時:no、none、never、false,它會告知 git apply 尊重所有空白字元的差異。請參閱 git-apply[1]。 - apply.whitespace
-
告知 git apply 如何處理空白字元,其方式與
--whitespace
選項相同。請參閱 git-apply[1]。 - attr.tree
-
參照儲存庫中的一個樹狀結構,從該結構讀取屬性,而不是從工作目錄中的
.gitattributes
檔案讀取。如果該值無法解析為有效的樹狀物件,則會改用空的樹狀結構。當使用GIT_ATTR_SOURCE
環境變數或--attr-source
命令列選項時,此組態變數無效。
注意
|
bitmapPseudoMerge.* 中的組態選項被視為「實驗性」功能,未來可能會變更或完全移除。有關偽合併點陣圖功能的詳細資訊,請參閱 gitpacking[7] 的「偽合併點陣圖」章節。 |
- bitmapPseudoMerge.<名稱>.pattern
-
用於比對參考名稱的正規表示式。指向符合此模式的參考的提交(並符合以下標準,例如
bitmapPseudoMerge.<名稱>.sampleRate
和bitmapPseudoMerge.<名稱>.threshold
)將會被考慮納入偽合併點陣圖。提交會根據是否有任何指向特定提交的參考符合該模式(一個擴展的正規表示式)來分組到偽合併群組中。
在偽合併群組內,提交可能會根據模式中的捕獲群組進一步分組為子群組。這些子群組是透過將正規表示式中的任何捕獲群組串連起來,並在它們之間加上一個 _- _ 短破折號來形成的。
例如,如果模式是
refs/tags/
,則所有標籤(如果符合以下標準)都會被視為同一個偽合併群組的候選。但是,如果模式是refs/remotes/([0-9])+/tags/
,則來自不同遠端的標籤會根據遠端編號分組到不同的偽合併群組中。 - bitmapPseudoMerge.<名稱>.decay
-
決定連續的偽合併點陣圖群組大小縮小的速率。必須為非負數。此參數可以被認為是函數
f(n) = C * n^-k
中的k
,其中f(n)
是第 `n` 個群組的大小。將衰減率設定為
0
會導致所有群組的大小都相同。將衰減率設定為1
會導致第 `n` 個群組的大小為初始群組大小的 `1/n`。衰減率的數值越高,連續群組的縮小速度越快。預設值為1
。如果所有群組的大小都相同,則包含較新提交的群組可能比早期群組的使用頻率低,因為指向較新提交的參考比指向舊提交的參考更可能經常更新。
- bitmapPseudoMerge.<名稱>.sampleRate
-
決定在不穩定的偽合併點陣圖中選取包含的非點陣圖提交(在參考提示中)的比例。必須介於
0
和1
(含)之間。預設值為1
。 - bitmapPseudoMerge.<名稱>.threshold
-
決定非點陣圖提交(如上所述,在參考提示中)成為包含在不穩定偽合併點陣圖中的候選的最小年齡。預設值為
1.week.ago
。 - bitmapPseudoMerge.<名稱>.maxMerges
-
決定提交可能分佈其中的偽合併提交的最大數量。
對於模式不包含任何捕獲群組的偽合併群組,此設定會應用於所有符合正規表示式的提交。對於具有一個或多個捕獲群組的模式,此設定會應用於每個不同的捕獲群組。
例如,如果您的捕獲群組是
refs/tags/
,則此設定會將所有標籤分佈到最多maxMerges
個偽合併提交中。但是,如果您的捕獲群組是refs/remotes/([0-9]+)/tags/
,則此設定會個別應用於每個遠端的標籤集。必須為非負數。預設值為 64。
- bitmapPseudoMerge.<名稱>.stableThreshold
-
決定提交(如上所述,在參考提示中,但是即使穩定提交已被點陣圖覆蓋,仍然會被視為候選)成為穩定偽合併點陣圖候選的最小年齡。預設值為
1.month.ago
。將此閾值設定為較小的值(例如,1.week.ago)會產生更多穩定的群組(這會產生一次性的產生費用),但這些群組可能會隨著時間的推移而過時。使用較大的值會產生相反的懲罰(較少的穩定群組,但更有用)。
- bitmapPseudoMerge.<名稱>.stableSize
-
決定穩定偽合併點陣圖的大小(以提交數量為單位)。預設值為
512
。 - blame.blankBoundary
-
在 git-blame[1] 中,針對邊界提交顯示空白的提交物件名稱。此選項預設為 false。
- blame.coloring
-
這決定了要套用於 blame 輸出的顏色方案。它可以是 *repeatedLines*、*highlightRecent* 或 *none*,預設為 *none*。
- blame.date
-
指定在 git-blame[1] 中輸出日期時使用的格式。如果未設定,則會使用 iso 格式。如需支援的值,請參閱 git-log[1] 中
--date
選項的討論。 - blame.showEmail
-
在 git-blame[1] 中顯示作者電子郵件,而不是作者姓名。此選項預設為 false。
- blame.showRoot
-
在 git-blame[1] 中,不要將根提交視為邊界。此選項預設為 false。
- blame.ignoreRevsFile
-
在 git-blame[1] 中,忽略檔案中列出的修訂版本,每行一個未縮寫的物件名稱。會忽略空白和以
#
開頭的註解。此選項可以重複多次。空的檔案名稱會重設已忽略修訂版本的清單。此選項會在命令列選項--ignore-revs-file
之前處理。 - blame.markUnblamableLines
-
在 git-blame[1] 的輸出中,使用 * 標記由我們無法歸因於另一個提交的已忽略修訂版本變更的行。
- blame.markIgnoredLines
-
在 git-blame[1] 的輸出中,使用 ? 標記由我們歸因於另一個提交的已忽略修訂版本變更的行。
- branch.autoSetupMerge
-
告訴 *git branch*、*git switch* 和 *git checkout* 設定新的分支,以便 git-pull[1] 可以適當地從起點分支合併。請注意,即使未設定此選項,也可以使用
--track
和--no-track
選項為每個分支選擇此行為。有效的設定如下:false
— 不進行自動設定;true
— 當起點是遠端追蹤分支時,會進行自動設定;always
— 當起點是本機分支或遠端追蹤分支時,會進行自動設定;inherit
— 如果起點具有追蹤組態,則會將其複製到新的分支;simple
— 僅當起點是遠端追蹤分支且新分支的名稱與遠端分支相同時,才會進行自動設定。此選項預設為 true。 - branch.autoSetupRebase
-
當使用 *git branch*、*git switch* 或 *git checkout* 建立追蹤另一個分支的新分支時,此變數會告訴 Git 設定 pull 以進行 rebase,而不是合併(請參閱「branch.<名稱>.rebase」)。當
never
時,永遠不會自動將 rebase 設定為 true。當local
時,會將 rebase 設定為其他本機分支的追蹤分支為 true。當remote
時,會將 rebase 設定為遠端追蹤分支的追蹤分支為 true。當always
時,會將 rebase 設定為所有追蹤分支為 true。有關如何設定分支以追蹤另一個分支的詳細資訊,請參閱「branch.autoSetupMerge」。此選項預設為 never。 - branch.sort
-
當 git-branch[1] 顯示分支時,此變數會控制分支的排序順序。如果未提供 "--sort=<值>" 選項,則會使用此變數的值作為預設值。如需有效值,請參閱 git-for-each-ref[1] 欄位名稱。
- branch.<名稱>.remote
-
當在分支 <名稱> 上時,它會告訴 *git fetch* 和 *git push* 要從哪個遠端擷取或推送。推送到的遠端可能會被
remote.pushDefault
覆蓋(適用於所有分支)。當前分支推送到的遠端可能會進一步被branch.<名稱>.pushRemote
覆蓋。如果未設定任何遠端,或者您不在任何分支上且儲存庫中定義了多個遠端,則擷取的預設值為origin
,推送的預設值為remote.pushDefault
。此外,.
(句號)是當前的本機儲存庫(點儲存庫),請參閱下面branch.<名稱>.merge
的最後一個注意事項。 - branch.<名稱>.pushRemote
-
當在分支 <名稱> 上時,它會覆蓋用於推送的
branch.<名稱>.remote
。它也會覆蓋從分支 <名稱> 推送的remote.pushDefault
。當您從一個地方(例如您的上游)拉取並推送到另一個地方(例如您自己的發佈儲存庫)時,您會希望設定remote.pushDefault
以指定所有分支要推送到的遠端,並使用此選項來覆蓋特定分支。 - branch.<名稱>.merge
-
與 branch.<名稱>.remote 一起定義給定分支的上游分支。它會告訴 *git fetch*/*git pull*/*git rebase* 要合併哪個分支,並且還會影響 *git push*(請參閱 push.default)。當在分支 <名稱> 中時,它會告訴 *git fetch* 要在 FETCH_HEAD 中標記以進行合併的預設 refspec。該值的處理方式類似於 refspec 的遠端部分,並且必須符合從 "branch.<名稱>.remote" 給定的遠端擷取的 ref。合併資訊由 *git pull* 使用(它首先呼叫 *git fetch*)來查詢要合併的預設分支。如果沒有此選項,則 *git pull* 預設會合併擷取的第一個 refspec。指定多個值以取得章魚合併。如果您希望設定 *git pull*,以便它可以從本機儲存庫中的另一個分支合併到 <名稱> 中,您可以將 branch.<名稱>.merge 指向所需的分支,並對 branch.<名稱>.remote 使用相對路徑設定
.
(句號)。 - branch.<名稱>.mergeOptions
-
設定合併到分支 <名稱> 的預設選項。語法和支援的選項與 git-merge[1] 的相同,但目前不支援包含空白字元的選項值。
- branch.<名稱>.rebase
-
當為 true 時,在執行 "git pull" 時,將分支 <名稱> 基於擷取的分支之上,而不是從預設遠端合併預設分支。有關以非分支特定的方式執行此操作,請參閱「pull.rebase」。
當
merges
(或僅 m) 時,傳遞--rebase-merges
選項給 git rebase,以便將本地合併提交包含在變基中(詳情請參閱 git-rebase[1])。當值為
interactive
(或僅 i) 時,變基會在互動模式下執行。注意:這可能是一個危險的操作;除非您了解其含義,否則請勿使用(詳情請參閱 git-rebase[1])。
- branch.<名稱>.description
-
分支描述,可以使用
git branch --edit-description
編輯。分支描述會自動加入 format-patch 封面信或 request-pull 摘要。 - browser.<工具>.cmd
-
指定調用指定瀏覽器的命令。指定的命令會在 shell 中評估,並將 URL 作為參數傳遞。(請參閱 git-web--browse[1]。)
- browser.<工具>.path
-
覆寫用於瀏覽 HTML 說明(請參閱 git-help[1] 中的
-w
選項)或 gitweb 中工作儲存庫的給定工具的路徑(請參閱 git-instaweb[1])。 - bundle.*
-
bundle.*
金鑰可能會出現在透過git clone --bundle-uri
選項找到的套件清單檔案中。如果放置在儲存庫設定檔中,這些金鑰目前沒有任何作用,儘管未來會改變。詳情請參閱 套件 URI 設計文件。 - bundle.version
-
這個整數值會宣告套件清單使用的套件清單格式版本。目前,唯一接受的值是
1
。 - bundle.mode
-
這個字串值應為
all
或any
。此值描述是否需要所有宣告的套件才能完整了解套件化的資訊 (all
),或者是否任何一個列出的套件 URI 都已足夠 (any
)。 - bundle.heuristic
-
如果這個字串值金鑰存在,則套件清單旨在與增量
git fetch
命令良好運作。啟發法表示每個套件都有額外的金鑰可用,有助於判斷用戶端應下載哪個套件子集。目前唯一理解的值是creationToken
。 - bundle.<id>.*
-
bundle.<id>.*
金鑰用於描述套件清單中的單個項目,在<id>
下分組以進行識別。 - bundle.<id>.uri
-
這個字串值定義 Git 可以透過其存取此
<id>
內容的 URI。這個 URI 可以是一個套件檔案或另一個套件清單。 - checkout.defaultRemote
-
當您執行
git checkout <something>
或git switch <something>
並且只有一個遠端時,它可能會隱式回退到檢出和追蹤,例如origin/<something>
。只要您有多個具有<something>
參考的遠端,就會停止運作。這個設定允許設定一個偏好遠端的名稱,在消除歧義時應始終獲勝。典型的用例是將其設定為origin
。目前,當
git checkout <something>
或git switch <something>
將檢出另一個遠端的<something>
分支時,git-switch[1] 和 git-checkout[1] 使用此設定,而當git worktree add
參考遠端分支時,git-worktree[1] 也會使用此設定。此設定未來可能會用於其他類似檢出的命令或功能。 - checkout.guess
-
提供
git checkout
和git switch
中--guess
或--no-guess
選項的預設值。請參閱 git-switch[1] 和 git-checkout[1]。 - checkout.workers
-
更新工作樹時要使用的平行工作者數量。預設值為一,即循序執行。如果設定為小於一的值,Git 將使用與可用邏輯核心數量一樣多的工作者。此設定和
checkout.thresholdForParallelism
會影響所有執行檢出的命令。例如:檢出、複製、重設、稀疏檢出等。注意:對於位於 SSD 或透過 NFS 的儲存庫,平行檢出通常可提供更好的效能。對於位於旋轉硬碟和/或核心數量較少的機器上的儲存庫,預設的循序檢出通常效能更好。儲存庫的大小和壓縮等級也可能會影響平行版本的效能。
- checkout.thresholdForParallelism
-
當以少量的檔案執行平行檢出時,子程序產生和程序間通訊的成本可能會超過平行化的增益。此設定可讓您定義應嘗試平行檢出的最小檔案數。預設值為 100。
- clean.requireForce
-
一個布林值,使 git-clean 拒絕刪除檔案,除非提供 -f。預設值為 true。
-
clone.defaultRemoteName
-
複製儲存庫時要建立的遠端名稱。預設值為
origin
。可以透過將--origin
命令列選項傳遞給 git-clone[1] 來覆寫。 -
clone.rejectShallow
-
如果儲存庫是淺層儲存庫,則拒絕複製;可以透過在命令列上傳遞
--reject-shallow
選項來覆寫。請參閱 git-clone[1]。 -
clone.filterSubmodules
-
如果提供了部分複製篩選器(請參閱 git-rev-list[1] 中的
--filter
)且使用了--recurse-submodules
,也將篩選器套用至子模組。 - color.advice
-
一個布林值,用於啟用/停用提示中的顏色(例如,當推送失敗時,請參閱
advice.*
以取得清單)。可以設定為always
、false
(或never
)或auto
(或true
),在這種情況下,只有當錯誤輸出到終端機時才會使用顏色。如果未設定,則會使用color.ui
的值(預設為auto
)。 - color.advice.hint
-
為提示使用自訂顏色。
- color.blame.highlightRecent
-
根據行的時間指定
git blame --color-by-age
的行註解顏色。這個設定應該設定為以逗號分隔的顏色和日期設定清單,從顏色開始和結束,日期應從最舊到最新設定。如果行是在給定時間戳記之前引入的,則會使用指定的顏色為元資料著色,覆寫較舊的時間戳記顏色。
除了絕對時間戳記之外,相對時間戳記也可以使用,例如
2.weeks.ago
對於任何比 2 週前的時間都有效。它的預設值為
blue,12 month ago,white,1 month ago,red
,這會將一年以前的所有內容著色為藍色,一到一年之間的近期變更會保持白色,而最近一個月內引入的行會著色為紅色。 - color.blame.repeatedLines
-
如果行註解與前一行來自相同的提交,則使用指定的顏色為
git blame --color-lines
的行註解著色。預設值為青色。 - color.branch
-
一個布林值,用於啟用/停用 git-branch[1] 輸出的顏色。可以設定為
always
、false
(或never
)或auto
(或true
),在這種情況下,只有當輸出到終端機時才會使用顏色。如果未設定,則會使用color.ui
的值(預設為auto
)。 - color.branch.<slot>
-
使用自訂顏色進行分支著色。
<slot>
是current
(目前分支)、local
(本機分支)、remote
(refs/remotes/ 中的遠端追蹤分支)、upstream
(上游追蹤分支)、plain
(其他 refs) 之一。 - color.diff
-
是否使用 ANSI 跳脫序列為修補程式新增顏色。如果設定為
always
,則 git-diff[1]、git-log[1] 和 git-show[1] 將為所有修補程式使用顏色。如果設定為true
或auto
,則這些命令只有在輸出到終端機時才會使用顏色。如果未設定,則會使用color.ui
的值(預設為auto
)。這不會影響 git-format-patch[1] 或 git-diff-* 管道命令。可以使用
--color[=<when>]
選項在命令列上覆寫。 - color.diff.<slot>
-
使用自訂顏色進行 diff 著色。
<slot>
指定要使用指定顏色的修補程式部分,它是context
(上下文文字 -plain
是歷史同義詞)、meta
(元資訊)、frag
(hunk 標頭)、func (hunk 標頭中的函式)、old
(已移除的行)、new
(新增的行)、commit
(提交標頭)、whitespace
(醒目提示空白錯誤)、oldMoved
(已刪除的行)、newMoved
(已新增的行)、oldMovedDimmed
、oldMovedAlternative
、oldMovedAlternativeDimmed
、newMovedDimmed
、newMovedAlternative
newMovedAlternativeDimmed
(請參閱 git-diff[1] 中 --color-moved 的 <mode> 設定以了解詳細資訊)、contextDimmed
、oldDimmed
、newDimmed
、contextBold
、oldBold
和newBold
(請參閱 git-range-diff[1] 以了解詳細資訊)。 - 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
-
選取行中匹配的文字。此外,也用於自訂下列 git-log[1] 子命令:
--grep
、--author
和--committer
。 -
selected
-
選取行中不匹配的文字。此外,也用於自訂下列 git-log[1] 子命令:
--grep
、--author
和--committer
。 -
separator
-
行中欄位之間的間隔符(
:
、-
和=
)和區塊之間的間隔符(--
)
-
- color.interactive
-
當設定為
always
時,永遠會對互動式提示和顯示(例如 "git-add --interactive" 和 "git-clean --interactive" 所使用的提示和顯示)使用顏色。當設定為 false(或never
)時,則永遠不會。當設定為true
或auto
時,僅當輸出至終端時才會使用顏色。若未設定,則會使用color.ui
的值(預設為auto
)。 - color.interactive.<slot>
-
針對 *git add --interactive* 和 *git clean --interactive* 的輸出使用自訂顏色。
<slot>
可以是prompt
、header
、help
或error
,分別代表來自互動式命令的四種不同類型的正常輸出。 - color.pager
-
一個布林值,指定
auto
顏色模式是否應將輸出傳送到分頁器時使用顏色。預設值為 true;如果你的分頁器不理解 ANSI 顏色代碼,請將其設定為 false。 - color.push
-
一個布林值,啟用/停用推送錯誤中的顏色。可以設定為
always
、false
(或never
) 或auto
(或true
),在此情況下,只有在錯誤輸出傳送到終端時才會使用顏色。若未設定,則會使用color.ui
的值(預設為auto
)。 - color.push.error
-
針對推送錯誤使用自訂顏色。
- color.remote
-
如果設定,會突出顯示行開頭的關鍵字。關鍵字為 "error"、"warning"、"hint" 和 "success",且不區分大小寫。可以設定為
always
、false
(或never
) 或auto
(或true
)。若未設定,則會使用color.ui
的值(預設為auto
)。 - color.remote.<slot>
-
針對每個遠端關鍵字使用自訂顏色。
<slot>
可以是hint
、warning
、success
或error
,對應相應的關鍵字。 - color.showBranch
-
一個布林值,啟用/停用 git-show-branch[1] 輸出中的顏色。可以設定為
always
、false
(或never
) 或auto
(或true
),在此情況下,只有在輸出傳送到終端時才會使用顏色。若未設定,則會使用color.ui
的值(預設為auto
)。 - color.status
-
一個布林值,啟用/停用 git-status[1] 輸出中的顏色。可以設定為
always
、false
(或never
) 或auto
(或true
),在此情況下,只有在輸出傳送到終端時才會使用顏色。若未設定,則會使用color.ui
的值(預設為auto
)。 - color.status.<slot>
-
針對狀態顏色標示使用自訂顏色。
<slot>
可以是header
(狀態訊息的標頭文字)、added
或updated
(已加入但未提交的檔案)、changed
(已變更但未加入索引的檔案)、untracked
(未由 Git 追蹤的檔案)、branch
(目前分支)、nobranch
(顯示 *no branch* 警告的顏色,預設為紅色)、localBranch
或remoteBranch
(當在狀態簡短格式中顯示分支和追蹤資訊時,分別為本機和遠端分支名稱)或unmerged
(具有未合併變更的檔案)。 - color.transport
-
一個布林值,啟用/停用推送遭拒時的顏色。可以設定為
always
、false
(或never
) 或auto
(或true
),在此情況下,只有在錯誤輸出傳送到終端時才會使用顏色。若未設定,則會使用color.ui
的值(預設為auto
)。 - color.transport.rejected
-
當推送遭拒時使用自訂顏色。
- color.ui
-
此變數決定每個命令系列控制顏色使用的變數的預設值,例如
color.diff
和color.grep
。隨著更多命令學習設定--color
選項預設值的設定,其範圍將會擴大。如果你偏好 Git 命令不要使用顏色,除非使用其他設定或--color
選項明確啟用,則將其設定為false
或never
。如果你希望所有非用於機器取用的輸出都使用顏色,則將其設定為always
,如果你希望此類輸出在寫入終端時使用顏色,則將其設定為true
或auto
(這是自 Git 1.8.4 以來的預設值)。 - column.ui
-
指定支援的命令是否應以欄輸出。此變數包含以空格或逗號分隔的符號清單
這些選項控制何時應啟用此功能(預設為 *never*)
這些選項控制版面配置(預設為 *column*)。如果未指定 *always*、*never* 或 *auto*,則設定其中任何一項表示 *always*。
最後,這些選項可以與版面配置選項組合(預設為 *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] 以取得詳細資訊。當你總是希望在你的日誌訊息中保留以註解字元#
開頭的行時,變更預設值可能會很有用,在這種情況下,你會執行git config commit.cleanup whitespace
(請注意,如果你這樣做,你必須自己移除提交日誌範本中以#
開頭的說明行)。 - commit.gpgSign
-
一個布林值,指定是否應使用 GPG 簽署所有提交。在執行例如 rebase 等操作時使用此選項可能會導致大量提交被簽署。使用代理程式可能很方便,可以避免多次輸入 GPG 密碼。
- commit.status
-
一個布林值,啟用/停用在使用編輯器準備提交訊息時在提交訊息範本中包含狀態資訊。預設值為 true。
- commit.template
-
指定一個檔案的路徑名稱,作為新提交訊息的範本。
- commit.verbose
-
一個布林值或整數,用於指定
git commit
的詳細程度。請參閱 git-commit[1]。 - commitGraph.generationVersion
-
指定在寫入或讀取提交圖形檔案時要使用的世代編號版本類型。如果指定版本 1,則不會寫入或讀取更正後的提交日期。預設值為 2。
- commitGraph.maxNewFilters
-
指定
git commit-graph write
的--max-new-filters
選項的預設值(參見 git-commit-graph[1])。 - commitGraph.readChangedPaths
-
已過時。如果為 true,則等同於 commitGraph.changedPathsVersion=-1,如果為 false,則等同於 commitGraph.changedPathsVersion=0。(如果同時設定了 commitGraph.changedPathVersion,則 commitGraph.changedPathsVersion 優先。)
- commitGraph.changedPathsVersion
-
指定 Git 將讀取和寫入的變更路徑 Bloom 過濾器的版本。可以是 -1、0、1 或 2。請注意,大於 1 的值可能與尚未理解這些版本的舊版 Git 不相容。在混合版本環境中操作時請謹慎。
預設值為 -1。
如果為 -1,Git 將使用儲存庫中的變更路徑 Bloom 過濾器版本,如果沒有,則預設為 1。
如果為 0,Git 將不讀取任何 Bloom 過濾器,並在指示寫入時寫入版本 1 的 Bloom 過濾器。
如果為 1,Git 將僅讀取版本 1 的 Bloom 過濾器,並將寫入版本 1 的 Bloom 過濾器。
如果為 2,Git 將僅讀取版本 2 的 Bloom 過濾器,並將寫入版本 2 的 Bloom 過濾器。
有關更多資訊,請參閱 git-commit-graph[1]。
- completion.commands
-
這僅由 git-completion.bash 使用,以在完成的指令列表中新增或移除指令。通常只會完成瓷器指令和少數其他選定的指令。您可以在此變數中加入更多指令,並以空格分隔。在指令前加上 - 將會從現有列表中移除該指令。
- core.fileMode
-
告知 Git 是否要遵守工作目錄中檔案的可執行位元。
某些檔案系統會在檢出標記為可執行的檔案,或檢出可執行位元開啟的非可執行檔案時,遺失可執行位元。git-clone[1] 或 git-init[1] 會偵測檔案系統是否正確處理可執行位元,並在必要時自動設定此變數。
但是,儲存庫可能位於可以正確處理檔案模式的檔案系統上,並且此變數在建立時設定為 true,但稍後可能會從另一個會遺失檔案模式的環境存取(例如,透過 CIFS 掛載匯出 ext4、使用適用於 Windows 或 Eclipse 的 Git 存取 Cygwin 建立的儲存庫)。在這種情況下,可能需要將此變數設定為 false。請參閱 git-update-index[1]。
預設值為 true(當設定檔中未指定 core.filemode 時)。
- core.hideDotFiles
-
(僅限 Windows)如果為 true,則將名稱以點開頭的新建目錄和檔案標記為隱藏。如果為 dotGitOnly,則只會隱藏
.git/
目錄,但不會隱藏其他以點開頭的檔案。預設模式為 dotGitOnly。 - core.ignoreCase
-
內部變數,可啟用各種變通方法,讓 Git 在不區分大小寫的檔案系統(如 APFS、HFS+、FAT、NTFS 等)上更好地運作。例如,如果目錄列表在 Git 期望 "Makefile" 時找到 "makefile",Git 會假設它實際上是同一個檔案,並繼續將其記住為 "Makefile"。
預設值為 false,但 git-clone[1] 或 git-init[1] 會在建立儲存庫時偵測並在適當情況下將 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「短」名稱衝突。在 Windows 上預設為
true
,在其他地方則為false
。 - core.fsmonitor
-
如果設定為 true,則為此工作目錄啟用內建的檔案系統監控常駐程式 (git-fsmonitor--daemon[1])。
與基於掛勾的檔案系統監控器類似,內建的檔案系統監控器可以加速需要在具有許多檔案的工作目錄中重新整理 Git 索引的 Git 指令(例如
git status
)。內建的監控器無需安裝和維護外部協力廠商工具。內建的檔案系統監控器目前僅在有限的支援平台上提供。目前,這包括 Windows 和 MacOS。
Otherwise, this variable contains the pathname of the "fsmonitor" hook command.
此掛勾指令用於識別自請求的日期/時間以來可能已變更的所有檔案。此資訊用於加速 Git,避免不必要地掃描未變更的檔案。
請參閱 githooks[5] 的 "fsmonitor-watchman" 章節。
請注意,如果您同時使用多個版本的 Git,例如一個版本在命令列上,而另一個版本在 IDE 工具中,則
core.fsmonitor
的定義已擴充,除了掛勾路徑名稱外,還允許布林值。Git 2.35.1 及更早版本將無法理解布林值,並將 "true" 或 "false" 值視為要調用的掛勾路徑名稱。Git 2.26 到 2.35.1 版本預設為掛勾協定 V2,並會回退到不使用 fsmonitor(完整掃描)。2.26 之前的 Git 版本預設為掛勾協定 V1,並會靜默地假設沒有任何變更要報告(不掃描),因此狀態指令可能會報告不完整的結果。因此,最好在使用內建的檔案系統監控器之前,升級所有 Git 版本。 - core.fsmonitorHookVersion
-
設定叫用 "fsmonitor" 掛勾時要使用的協定版本。
目前有版本 1 和 2。如果未設定此選項,則會先嘗試版本 2,如果失敗,則會嘗試版本 1。版本 1 使用時間戳記作為輸入來判斷自該時間以來哪些檔案發生了變更,但是某些監控器(如 Watchman)在使用時間戳記時會出現競爭條件。版本 2 使用不透明的字串,以便監控器可以傳回可以用於判斷哪些檔案發生變更的資訊,而不會出現競爭條件。
- core.trustctime
-
如果為 false,則會忽略索引和工作目錄之間的 ctime 差異;當 inode 變更時間經常由 Git 之外的項目修改時(檔案系統爬蟲和某些備份系統),這會很有用。請參閱 git-update-index[1]。預設為 True。
- core.splitIndex
-
如果為 true,則會使用索引的分割索引功能。請參閱 git-update-index[1]。預設為 False。
- core.untrackedCache
-
決定如何處理索引的未追蹤快取功能。如果未設定此變數或設定為
keep
,則會保留它。如果設定為true
,則會自動新增它。如果設定為false
,則會自動移除它。在設定為true
之前,您應檢查 mtime 在您的系統上是否正常運作。請參閱 git-update-index[1]。預設為keep
,除非啟用feature.manyFiles
,否則會將此設定預設為true
。 - 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 中「微」的八進位\302\265
)。如果此變數設定為 false,則不再認為高於 0x80 的位元組是「不常見」的。無論此變數的設定為何,雙引號、反斜線和控制字元都會始終逸出。簡單的空格字元不被認為是「不常見」的。許多指令可以使用-z
選項完全逐字輸出路徑名稱。預設值為 true。 - core.eol
-
設定工作目錄中,標記為文字檔案(透過設定
text
屬性,或是設定text=auto
且 Git 自動偵測內容為文字)所使用的行尾符號類型。選項有 lf、crlf 和 native,其中 native 會使用平台原生的行尾符號。預設值為native
。關於行尾轉換的更多資訊,請參閱 gitattributes[5]。請注意,如果core.autocrlf
設定為true
或input
,此值會被忽略。 - core.safecrlf
-
如果為 true,當行尾轉換啟用時,Git 會檢查
CRLF
的轉換是否可逆。Git 會驗證命令是否直接或間接修改工作樹中的檔案。例如,提交一個檔案然後檢出同一個檔案應該要在工作樹中產生原始檔案。如果目前的core.autocrlf
設定不是這種情況,Git 會拒絕該檔案。該變數可以設定為 "warn",在這種情況下,Git 只會警告不可逆的轉換,但會繼續操作。CRLF 轉換有輕微的資料損毀風險。當啟用時,Git 會在提交時將 CRLF 轉換為 LF,並在檢出時將 LF 轉換為 CRLF。在提交之前包含 LF 和 CRLF 混合的檔案,無法由 Git 重新建立。對於文字檔案來說,這是正確的做法:它可以修正行尾符號,讓我們在儲存庫中只有 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
-
如果
working-tree-encoding
屬性(請參閱 gitattributes[5])中使用,Git 會執行 UTF-8 來回檢查的編碼列表,以逗號和/或空白分隔。預設值為SHIFT-JIS
。 - core.symlinks
-
如果為 false,符號連結會被檢出為包含連結文字的小型純文字檔案。git-update-index[1] 和 git-add[1] 不會將記錄的類型變更為常規檔案。在不支援符號連結的檔案系統(如 FAT)上很有用。
預設值為 true,除非在建立儲存庫時,git-clone[1] 或 git-init[1] 會探查並適當地將 core.symlinks 設定為 false。
- core.gitProxy
-
當使用 Git 通訊協定擷取時,要執行的「Proxy 命令」(形式為 command host port),而不是建立與遠端伺服器的直接連線。如果變數值為 "COMMAND for DOMAIN" 格式,則該命令僅適用於以指定網域字串結尾的主機名稱。此變數可以設定多次,並按照給定的順序進行匹配;第一個匹配的項目獲勝。
可以被
GIT_PROXY_COMMAND
環境變數覆寫(它始終普遍適用,沒有特殊的 "for" 處理)。特殊字串
none
可以用作 Proxy 命令,以指定給定的網域模式不使用任何 Proxy。這對於將防火牆內的伺服器排除在 Proxy 使用之外,同時對於外部網域預設為通用 Proxy 非常有用。 - core.sshCommand
-
如果設定此變數,
git fetch
和git push
會在需要連線到遠端系統時使用指定的命令,而不是ssh
。該命令的形式與GIT_SSH_COMMAND
環境變數相同,並且在設定環境變數時會被覆寫。 - core.ignoreStat
-
如果為 true,Git 會避免使用 lstat() 呼叫來偵測檔案是否已變更,方法是為那些在索引和工作樹中都以相同方式更新的追蹤檔案設定「假設未變更」位元。
當檔案在 Git 外部被修改時,使用者需要明確暫存修改的檔案(例如,請參閱 git-update-index[1] 中的「範例」章節)。Git 通常不會偵測到對這些檔案的變更。
這在 lstat() 呼叫非常緩慢的系統(例如 CIFS/Microsoft Windows)上很有用。
預設值為 False。
- core.preferSymlinkRefs
-
對於 HEAD 和其他符號參考檔案,請使用符號連結,而不是預設的「symref」格式。有時需要這樣做才能使用預期 HEAD 為符號連結的舊腳本。
- core.alternateRefsCommand
-
當從備用位置宣告可用的歷史提示時,請使用 Shell 執行指定的命令,而不是 git-for-each-ref[1]。第一個參數是備用位置的絕對路徑。輸出必須每行包含一個十六進制物件 ID(即,與
git for-each-ref --format='%(objectname)'
產生的輸出相同)。請注意,您通常不能將
git for-each-ref
直接放入設定值中,因為它不接受儲存庫路徑作為引數(但您可以將上面的命令包裝在 Shell 腳本中)。 - core.alternateRefsPrefixes
-
當列出來自備用位置的參考時,僅列出以給定前綴開頭的參考。前綴的匹配方式與作為 git-for-each-ref[1] 的引數給定相同。要列出多個前綴,請以空白分隔它們。如果設定了
core.alternateRefsCommand
,則設定core.alternateRefsPrefixes
沒有任何效果。 - core.bare
-
如果為 true,則假定此儲存庫是裸的,並且沒有與其相關聯的工作目錄。如果這種情況發生,許多需要工作目錄的命令將被停用,例如 git-add[1] 或 git-merge[1]。
此設定會在建立儲存庫時由 git-clone[1] 或 git-init[1] 自動推測。預設情況下,以 "/.git" 結尾的儲存庫假定為非裸儲存庫(bare = false),而所有其他儲存庫假定為裸儲存庫(bare = true)。
- 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
,則會自動為分支頭(即refs/heads/
下)、遠端參考(即refs/remotes/
下)、註解參考(即refs/notes/
下)和符號參考HEAD
建立遺失的 "$GIT_DIR/logs/<ref>
" 檔案。如果設定為always
,則會自動為refs/
下的任何參考建立遺失的 reflog。此資訊可以用於確定「2 天前」分支的提示所指向的提交。
在與其關聯工作目錄的儲存庫中,此值預設為 true,在裸儲存庫中預設為 false。
- core.repositoryFormatVersion
-
識別儲存庫格式和佈局版本的內部變數。
-
當為 group(或 true)時,該儲存庫可以在群組中的多個使用者之間共用(確保所有檔案和物件都可由群組寫入)。當為 all(或 world 或 everybody)時,除了可由群組共用外,所有使用者都可以讀取該儲存庫。當為 umask(或 false)時,Git 將使用 umask(2) 回報的權限。當為 0xxx 時,其中 0xxx 是一個八進位數字,儲存庫中的檔案將具有此模式值。0xxx 將會覆寫使用者的 umask 值(而其他選項只會覆寫使用者 umask 值的請求部分)。範例:0660 將使儲存庫對於所有者和群組可讀/寫,但其他使用者無法存取(等同於 group,除非 umask 為例如 0022)。0640 是一個群組可讀但群組不可寫的儲存庫。請參閱 git-init[1]。預設值為 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。如果 core.compression 也未設定,則預設為 1(最佳速度)。
- core.packedGitWindowSize
-
單次映射操作中,要映射到記憶體的封裝檔案(pack file)位元組數。較大的視窗大小可能允許您的系統更快地處理較少的大型封裝檔案。較小的視窗大小會因呼叫作業系統記憶體管理器的次數增加而對效能產生負面影響,但在存取大量大型封裝檔案時,可能會提高效能。
如果在編譯時設定了 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
-
被視為「大型」檔案的大小,如下所述,這會改變許多 git 命令的行為,以及這些檔案在儲存庫中的儲存方式。預設值為 512 MiB。支援常見的單位後綴 k、m 或 g。
超過設定限制的檔案將會
-
在封裝檔案中以壓縮方式儲存,而不嘗試差異壓縮。
設定預設限制的主要考量是這個使用案例。有了它,大多數專案將對其原始程式碼和其他文字檔進行差異壓縮,但不會對較大的二進位媒體檔案進行差異壓縮。
不進行差異壓縮儲存大型檔案可避免過多的記憶體使用,但會略微增加磁碟使用量。
-
將被視為已標記為「二進位」(請參閱 gitattributes[5])。例如,git-log[1] 和 git-diff[1] 不會計算超過此限制的檔案差異。
-
通常在寫入時會進行串流處理,這可以避免過多的記憶體使用,但會產生一些固定的開銷。使用此功能的命令包括 git-archive[1]、git-fast-import[1]、git-index-pack[1]、git-unpack-objects[1] 和 git-fsck[1]。
-
- core.excludesFile
-
指定檔案的路徑名稱,該檔案包含描述不應追蹤的路徑的模式,除了
.gitignore
(每個目錄)和.git/info/exclude
之外。預設為$XDG_CONFIG_HOME/git/ignore
。如果$XDG_CONFIG_HOME
未設定或為空,則會改用$HOME/.config/git/ignore
。請參閱 gitignore[5]。 - core.askPass
-
某些命令(例如 svn 和 http 介面)會互動式要求密碼,可以告知它們使用透過此變數的值給定的外部程式。可以被
GIT_ASKPASS
環境變數覆寫。如果未設定,則會回退到SSH_ASKPASS
環境變數的值,如果該變數也不存在,則會使用簡單的密碼提示。外部程式應以適合的提示作為命令列引數,並將密碼寫入其 STDOUT。 - core.attributesFile
-
除了
.gitattributes
(每個目錄)和.git/info/attributes
之外,Git 還會在該檔案中尋找屬性(請參閱 gitattributes[5])。路徑擴充的處理方式與core.excludesFile
相同。其預設值為$XDG_CONFIG_HOME/git/attributes
。如果$XDG_CONFIG_HOME
未設定或為空,則會改用$HOME/.config/git/attributes
。 - core.hooksPath
-
預設情況下,Git 會在
$GIT_DIR/hooks
目錄中尋找您的 hook。將此設定為不同的路徑,例如/etc/git/hooks
,Git 將嘗試在該目錄中尋找您的 hook,例如/etc/git/hooks/pre-receive
,而不是在$GIT_DIR/hooks/pre-receive
中。路徑可以是絕對的或相對的。相對路徑被視為相對於執行 hook 的目錄(請參閱 githooks[5] 的「描述」部分)。
在您想要集中配置 Git hook,而不是在每個儲存庫基礎上配置它們,或者作為更靈活和集中的替代方案,以使用您已變更預設 hook 的
init.templateDir
時,此組態變數很有用。 - core.editor
-
諸如
commit
和tag
之類的命令,允許您透過啟動編輯器來編輯訊息,當此變數已設定且未設定環境變數GIT_EDITOR
時,會使用此變數的值。請參閱 git-var[1]。 - core.commentChar
- core.commentString
-
諸如
commit
和tag
之類的命令,允許您編輯訊息,會將以此字元開頭的行視為註解,並在編輯器傳回後將其刪除(預設值為 #)。如果設定為 "auto",
git-commit
將會選擇一個字元,該字元不是現有提交訊息中任何行的起始字元。請注意,這兩個變數是彼此的別名,在現代版本的 Git 中,您可以自由地將字串(例如,
//
或⁑⁕⁑
)與commentChar
一起使用。v2.45.0 之前的 Git 版本會忽略commentString
,但會拒絕由多個 ASCII 位元組組成的commentChar
值。如果您計劃在較舊和較新的 Git 版本中使用您的配置,您可能需要同時指定兩者[core] # single character for older versions commentChar = "#" # string for newer versions (which will override commentChar # because it comes later in the file) commentString = "//"
- 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 完全不會變更它)。如果您想要選擇性地覆寫 Git 對LESS
的預設設定,您可以將core.pager
設定為例如less -S
。這將由 Git 傳遞給 shell,shell 會將最終命令轉換為LESS=FRX less -S
。環境不會設定S
選項,但命令列會設定,指示 less 截斷長行。同樣地,將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
將在行的初始縮排部分中,緊接在 tab 字元之前的空白字元視為錯誤(預設啟用)。 -
indent-with-non-tab
將使用空白字元而不是等效 tab 縮排的行視為錯誤(預設未啟用)。 -
tab-in-indent
將行初始縮排部分中的 tab 字元視為錯誤(預設未啟用)。 -
blank-at-eof
將新增在檔案結尾的空白行視為錯誤(預設啟用)。 -
trailing-space
是涵蓋blank-at-eol
和blank-at-eof
的簡稱。 -
cr-at-eol
將行尾的回車符視為行終止符的一部分,也就是說,如果此類回車符之前的字元不是空白,則使用它時,trailing-space
不會觸發(預設未啟用)。 -
tabwidth=<n>
指定一個 Tab 字元佔據多少個字元位置;這與indent-with-non-tab
選項以及當 Git 修正tab-in-indent
錯誤時有關。預設的 Tab 寬度為 8。允許的值為 1 到 63。
-
- core.fsync
-
一個以逗號分隔的清單,列出當建立或修改儲存庫時,應該透過 core.fsyncMethod 強化的儲存庫元件。您可以使用 - 作為前綴來停用任何元件的強化。如果系統發生不乾淨的關機,未強化的項目可能會遺失。除非您有特殊需求,否則建議您將此選項留空,或選擇
committed
、added
或all
其中一個。當遇到此設定時,元件集合會從平台預設值開始,移除已停用的元件,並新增其他元件。
none
會重設狀態,因此平台預設值會被忽略。空字串會將 fsync 設定重設為平台預設值。大多數平台上的預設值相當於
core.fsync=committed,-loose-object
,具有良好的效能,但如果發生不乾淨的系統關機,可能會遺失最近的工作。-
none
會清除已 fsync 的元件集合。 -
loose-object
會強化以鬆散物件形式新增至儲存庫的物件。 -
pack
會強化以封裝檔案形式新增至儲存庫的物件。 -
pack-metadata
會強化封裝檔案的位元圖和索引。 -
commit-graph
會強化 commit-graph 檔案。 -
index
會在索引修改時強化索引。 -
objects
是一個彙總選項,相當於loose-object,pack
。 -
reference
會強化儲存庫中修改的參考。 -
derived-metadata
是一個彙總選項,相當於pack-metadata,commit-graph
。 -
committed
是一個彙總選項,目前相當於objects
。此模式會犧牲一些效能,以確保使用git commit
或類似命令提交至儲存庫的工作已強化。 -
added
是一個彙總選項,目前相當於committed,index
。此模式會犧牲更多效能,以確保像git add
和類似操作的結果已強化。 -
all
是一個彙總選項,會同步上述所有個別元件。
-
- core.fsyncMethod
-
一個值,指示 Git 將使用何種策略,透過 fsync 和相關基本函式來強化儲存庫資料。
-
fsync
使用 fsync() 系統呼叫或平台等效函式。 -
writeout-only
發出頁面快取寫回請求,但依賴於檔案系統和儲存硬體,新增至儲存庫的資料在系統崩潰時可能無法持久保存。這是 macOS 上的預設模式。 -
batch
啟用一種模式,使用 writeout-only 快閃將多個更新暫存到磁碟寫回快取中,然後對虛擬檔案執行一次完整 fsync,以觸發操作結束時的磁碟快取刷新。目前
batch
模式僅適用於鬆散物件檔案。其他儲存庫資料會像指定fsync
一樣持久保存。對於儲存在 HFS+ 或 APFS 檔案系統上的 macOS 儲存庫,以及儲存在 NTFS 或 ReFS 檔案系統上的 Windows 儲存庫,此模式預計與fsync
一樣安全。
-
- core.fsyncObjectFiles
-
此布林值會在寫入物件檔案時啟用 fsync()。此設定已過時。請改用 core.fsync。
此設定會影響以鬆散物件形式新增至 Git 儲存庫的資料。當設定為 true 時,Git 會發出 fsync 或類似的系統呼叫來刷新快取,以便在系統不乾淨關機時,鬆散物件保持一致。
- core.preloadIndex
-
為像 git diff 的操作啟用平行索引預先載入。
這可以加速像 git diff 和 git status 的操作,尤其是在像 NFS 這樣具有較弱快取語義和相對較高 IO 延遲的檔案系統上。啟用時,Git 會平行執行與檔案系統資料的索引比較,允許 IO 重疊。預設為 true。
- core.unsetenvvars
-
僅限 Windows:以逗號分隔的環境變數名稱清單,這些名稱需要在衍生任何其他處理序之前取消設定。預設值為
PERL5LIB
,以說明 Windows 版 Git 堅持使用其自己的 Perl 直譯器。 - core.restrictinheritedhandles
-
僅限 Windows:覆寫衍生的處理序是否只繼承標準檔案控制代碼 (
stdin
、stdout
和stderr
) 或所有控制代碼。可以是auto
、true
或false
。預設值為auto
,表示在 Windows 7 和更新版本上為true
,在較舊的 Windows 版本上為false
。 - core.createObject
-
您可以將此設定為 link,在這種情況下,會使用硬連結,然後刪除來源,以確保物件建立不會覆寫現有物件。
在某些檔案系統/作業系統組合上,這不可靠。請在此將此設定設為 rename;但是,這將移除確保現有物件檔案不會被覆寫的檢查。
- core.notesRef
-
在顯示提交訊息時,也會顯示儲存在指定參考中的註解。該參考必須是完整限定的。如果指定的參考不存在,這不是錯誤,而是表示不應列印任何註解。
此設定預設為 "refs/notes/commits",並且可以被
GIT_NOTES_REF
環境變數覆寫。請參閱 git-notes[1]。 - core.commitGraph
-
如果為 true,則 git 會讀取 commit-graph 檔案 (如果存在) 來剖析提交的圖形結構。預設值為 true。有關更多資訊,請參閱 git-commit-graph[1]。
- core.useReplaceRefs
-
如果設定為
false
,則行為方式如同在命令列中給定了--no-replace-objects
選項。有關更多資訊,請參閱 git[1] 和 git-replace[1]。 - core.multiPackIndex
-
使用多封裝索引檔案,透過單一索引追蹤多個封裝檔案。有關更多資訊,請參閱 git-multi-pack-index[1]。預設值為 true。
- core.sparseCheckout
-
啟用「稀疏簽出」功能。有關更多資訊,請參閱 git-sparse-checkout[1]。
- core.sparseCheckoutCone
-
啟用稀疏簽出功能的「錐形模式」。當稀疏簽出檔案包含一組有限的模式時,此模式可提供顯著的效能優勢。可以要求「非錐形模式」透過將此變數設定為 false 來允許指定更彈性的模式。有關更多資訊,請參閱 git-sparse-checkout[1]。
- core.abbrev
-
設定物件名稱縮寫到的長度。如果未指定或設定為「auto」,則會根據儲存庫中封裝物件的大概數量計算出適當的值,希望足以讓縮寫的物件名稱在一段時間內保持唯一性。如果設定為「no」,則不會進行任何縮寫,並以完整長度顯示物件名稱。最小長度為 4。
- core.maxTreeDepth
-
Git 在走訪樹狀結構時願意遞迴的最大深度(例如,「a/b/cde/f」的深度為 4)。這是一個故障保護機制,可讓 Git 正常中止,一般不需要調整。當使用 MSVC 編譯 Git 時,預設值為 512。否則,預設值為 2048。
- credential.helper
-
指定在需要使用者名稱或密碼憑證時要呼叫的外部幫手;該幫手可以查詢外部儲存,以避免提示使用者輸入憑證。這通常是憑證幫手的名稱,可能帶有引數,但也可能是帶有引數的絕對路徑,或者如果前面加上
!
,則是 Shell 命令。請注意,可以定義多個幫手。有關詳細資訊和範例,請參閱 gitcredentials[7]。
- credential.interactive
-
預設情況下,當需要新憑證時,Git 和任何已設定的憑證幫手都會要求使用者輸入。如果這些憑證仍然有效,許多這些幫手將基於已儲存的憑證成功執行。為了避免 Git 的使用者互動可能性,請設定
credential.interactive=false
。某些憑證幫手也會尊重此選項。 - credential.useHttpPath
-
在取得憑證時,請考慮 http 或 https URL 的「路徑」元件是否重要。預設值為 false。有關更多資訊,請參閱 gitcredentials[7]。
- credential.username
-
如果未設定網路驗證的使用者名稱,則預設使用此使用者名稱。請參閱下方的 credential.<context>.* 和 gitcredentials[7]。
- credential.<url>.*
-
上述任何 credential.* 選項都可以選擇性地應用於某些憑證。例如,「credential.https://example.com.username」將只針對與 example.com 的 https 連線設定預設使用者名稱。有關 URL 如何比對的詳細資訊,請參閱 gitcredentials[7]。
- credentialCache.ignoreSIGHUP
-
告訴 git-credential-cache—daemon 忽略 SIGHUP,而不是退出。
- credentialStore.lockTimeoutMS
-
git-credential-store 在嘗試鎖定憑證檔案時重試的時間長度(以毫秒為單位)。值為 0 表示完全不重試;-1 表示無限期嘗試。預設值為 1000 (即重試 1 秒)。
- diff.autoRefreshIndex
-
當使用 git diff 與工作樹檔案進行比較時,請勿將僅限 stat 的變更視為已變更。而是靜默執行
git update-index --refresh
,以更新工作樹中內容與索引中內容相符的路徑的快取 stat 資訊。此選項預設為 true。請注意,這僅影響 git diff Porcelain,而不影響較低層級的 diff 命令,例如 git diff-files。 - diff.dirstat
-
一個以逗號分隔的
--dirstat
參數清單,指定 git-diff[1] 及其相關工具的--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.statNameWidth
-
限制 --stat 輸出中檔案名稱部分的寬度。如果設定,則適用於所有產生 --stat 輸出的命令,除了 format-patch。
- diff.statGraphWidth
-
限制 --stat 輸出中圖形部分的寬度。如果設定,則適用於所有產生 --stat 輸出的命令,除了 format-patch。
- diff.context
-
產生具有 <n> 行上下文的差異,而不是預設的 3 行。此值會被 -U 選項覆寫。
- diff.interHunkContext
-
顯示差異區塊之間的上下文,最多顯示指定的行數,從而合併彼此接近的區塊。此值作為
--inter-hunk-context
命令列選項的預設值。 - diff.external
-
如果設定此設定變數,則不會使用內部差異機制執行差異產生,而是使用給定的命令。可以使用 'GIT_EXTERNAL_DIFF' 環境變數覆寫。該命令的呼叫參數如 git[1] 中「git Diffs」所述。請注意:如果您只想在檔案的子集上使用外部差異程式,則可能需要改用 gitattributes[5]。
- diff.trustExitCode
-
如果此布林值設定為 true,則
diff.external
命令預期會在它認為輸入檔案相等時返回退出碼 0,或在它認為輸入檔案不同時返回 1,如同diff(1)
。如果設定為 false(預設值),則該命令預期無論是否相等都會返回退出碼 0。任何其他退出碼都會導致 Git 報告嚴重錯誤。 - diff.ignoreSubmodules
-
設定 --ignore-submodules 的預設值。請注意,這只會影響 git diff Porcelain,而不會影響較低層級的 diff 命令,例如 git diff-files。當報告未提交的變更時,git checkout 和 git switch 也會遵循此設定。將其設定為 all 會停用 git commit 和 git status 通常會顯示的子模組摘要(當設定了
status.submoduleSummary
時),除非使用 --ignore-submodules 命令列選項覆寫。git submodule 命令不受此設定的影響。預設情況下,此設定為 untracked,以便忽略任何未追蹤的子模組。 - diff.mnemonicPrefix
-
如果設定,git diff 會根據比較的內容使用與標準 "a/" 和 "b/" 不同的前綴對。當此配置生效時,反向差異輸出也會交換前綴的順序
- diff.noPrefix
-
如果設定,git diff 不會顯示任何來源或目的地前綴。
- diff.srcPrefix
-
如果設定,git diff 會使用此來源前綴。預設為 "a/"。
- diff.dstPrefix
-
如果設定,git diff 會使用此目的地前綴。預設為 "b/"。
- diff.relative
-
如果設定為 true,git diff 不會顯示目錄外的變更,並顯示相對於目前目錄的路徑名稱。
- diff.orderFile
-
指示如何對差異中的檔案排序的檔案。請參閱 git-diff[1] 的 -O 選項以瞭解詳細資訊。如果
diff.orderFile
是相對路徑名稱,則會將其視為相對於工作樹的頂層。 - diff.renameLimit
-
在複製/重新命名偵測的詳盡部分要考慮的檔案數量;相當於 git diff 選項
-l
。如果未設定,則預設值目前為 1000。如果關閉重新命名偵測,則此設定沒有效果。 - diff.renames
-
Git 是否以及如何偵測重新命名。如果設定為 "false",則會停用重新命名偵測。如果設定為 "true",則會啟用基本重新命名偵測。如果設定為 "copies" 或 "copy",Git 也會偵測複製。預設值為 true。請注意,這只會影響 git diff Porcelain,例如 git-diff[1] 和 git-log[1],而不會影響較低層級的命令,例如 git-diff-files[1]。
- diff.suppressBlankEmpty
-
一個布林值,用於抑制在每個空的輸出列之前列印空格的標準行為。預設值為 false。
- diff.submodule
-
指定如何顯示子模組差異的格式。"short" 格式僅顯示範圍開始和結束時的提交名稱。"log" 格式會像 git-submodule[1]
summary
一樣列出範圍內的提交。"diff" 格式會顯示子模組已變更內容的內嵌差異。預設值為 "short"。 - diff.wordRegex
-
一個 POSIX 擴展正規表示式,用於判斷在執行逐字差異計算時何為「字詞」。符合正規表示式的字元序列是「字詞」,所有其他字元都是**可忽略**的空白字元。
- diff.<driver>.command
-
自訂差異驅動程式命令。請參閱 gitattributes[5] 以瞭解詳細資訊。
- diff.<driver>.trustExitCode
-
如果此布林值設定為 true,則
diff.<driver>.command
命令預期會在它認為輸入檔案相等時返回退出碼 0,或在它認為輸入檔案不同時返回 1,如同diff(1)
。如果設定為 false(預設值),則該命令預期無論是否相等都會返回退出碼 0。任何其他退出碼都會導致 Git 報告嚴重錯誤。 - diff.<driver>.xfuncname
-
差異驅動程式應使用以辨識區塊標頭的正規表示式。也可以使用內建模式。請參閱 gitattributes[5] 以瞭解詳細資訊。
- diff.<driver>.binary
-
將此選項設定為 true,以使差異驅動程式將檔案視為二進制檔案。請參閱 gitattributes[5] 以瞭解詳細資訊。
- diff.<driver>.textconv
-
差異驅動程式應呼叫以產生檔案文字轉換版本的命令。轉換的結果用於產生人類可讀取的差異。請參閱 gitattributes[5] 以瞭解詳細資訊。
- diff.<driver>.wordRegex
-
差異驅動程式應使用以分割行中字詞的正規表示式。請參閱 gitattributes[5] 以瞭解詳細資訊。
- diff.<driver>.cachetextconv
-
將此選項設定為 true,以使差異驅動程式快取文字轉換輸出。請參閱 gitattributes[5] 以瞭解詳細資訊。
-
araxis
-
bc
-
codecompare
-
deltawalker
-
diffmerge
-
diffuse
-
ecmerge
-
emerge
-
examdiff
-
guiffy
-
gvimdiff
-
kdiff3
-
kompare
-
meld
-
nvimdiff
-
opendiff
-
p4merge
-
smerge
-
tkdiff
-
vimdiff
-
vscode
-
winmerge
-
xxdiff
-
- diff.indentHeuristic
-
將此選項設定為
false
以停用預設的啟發式方法,該方法會移動差異區塊邊界以使修補程式更易於閱讀。 - diff.algorithm
-
選擇差異演算法。變體如下
- diff.wsErrorHighlight
-
在差異的
context
、old
或new
行中突出顯示空格錯誤。多個值以逗號分隔,none
會重設先前的值,default
會將清單重設為new
,而all
是old,new,context
的簡寫。空格錯誤會使用color.diff.whitespace
著色。命令列選項--ws-error-highlight=<kind>
會覆寫此設定。 - diff.colorMoved
-
如果設定為有效的
<mode>
或 true 值,則差異中的移動行會以不同的顏色著色,有關有效模式的詳細資訊,請參閱 git-diff[1] 中的 --color-moved。如果僅設定為 true,則會使用預設顏色模式。如果設定為 false,則移動的行不會著色。 - diff.colorMovedWS
-
當移動的行使用例如
diff.colorMoved
設定進行著色時,此選項會控制<mode>
如何處理空格。有關有效模式的詳細資訊,請參閱 git-diff[1] 中的 --color-moved-ws。 - diff.tool
-
控制 git-difftool[1] 使用的差異工具。此變數會覆寫
merge.tool
中設定的值。以下列表顯示了有效的內建值。任何其他值都會被視為自訂差異工具,並且需要定義對應的 difftool.<tool>.cmd 變數。 - diff.guitool
-
當指定 -g/--gui 標誌時,控制 git-difftool[1] 使用的差異工具。此變數會覆寫
merge.guitool
中設定的值。以下列表顯示了有效的內建值。任何其他值都會被視為自訂差異工具,並且需要定義對應的 difftool.<guitool>.cmd 變數。 - difftool.<tool>.cmd
-
指定調用指定的差異工具的命令。指定的命令會在 shell 中進行評估,並提供以下變數:LOCAL 設定為包含差異前映像內容的臨時檔名稱,而 REMOTE 設定為包含差異後映像內容的臨時檔名稱。
有關更多詳細資訊,請參閱 git-difftool[1] 中的
--tool=<tool>
選項。 - difftool.<tool>.path
-
覆寫給定工具的路徑。當您的工具不在 PATH 中時,這會很有用。
- difftool.trustExitCode
-
如果調用的差異工具傳回非零的退出狀態,則退出 difftool。
有關更多詳細資訊,請參閱 git-difftool[1] 中的
--trust-exit-code
選項。 - difftool.prompt
-
在每次調用差異工具之前提示。
- difftool.guiDefault
-
設定為
true
以預設使用diff.guitool
(相當於指定--gui
引數),或設定為auto
以根據DISPLAY
環境變數值的存在來選擇diff.guitool
或diff.tool
。預設值為false
,其中必須明確提供--gui
引數才能使用diff.guitool
。 - extensions.objectFormat
-
指定要使用的雜湊演算法。可接受的值為
sha1
和sha256
。如果未指定,則假設為sha1
。除非core.repositoryFormatVersion
為 1,否則指定此金鑰會產生錯誤。請注意,此設定應僅由 git-init[1] 或 git-clone[1] 設定。在初始化後嘗試變更它將不會起作用,並會產生難以診斷的問題。
- extensions.compatObjectFormat
-
指定要使用的相容雜湊演算法。可接受的值為
sha1
和sha256
。指定的值必須與 extensions.objectFormat 的值不同。這允許 Git 儲存庫之間的客戶端級互通性,這些儲存庫的 objectFormat 與此 compatObjectFormat 相符。特別是,當完全實作時,從其 objectFormat 與 compatObjectFormat 相符的儲存庫推送和提取。以及能夠使用以 compatObjectFormat 編碼的 oids 以及以 objectFormat 編碼的 oids 來在本機指定物件。 - extensions.refStorage
-
指定要使用的 ref 儲存格式。可接受的值為
-
files
,用於具有 packed-refs 的鬆散檔案。這是預設值。 -
reftable
,用於 reftable 格式。此格式是實驗性的,其內部結構可能會變更。
除非
core.repositoryFormatVersion
為 1,否則指定此金鑰會產生錯誤。+ 請注意,此設定應僅由 git-init[1] 或 git-clone[1] 設定。在初始化後嘗試變更它將不會起作用,並會產生難以診斷的問題。
-
- extensions.worktreeConfig
-
如果啟用,則工作樹將從
$GIT_DIR/config.worktree
檔案以及$GIT_COMMON_DIR/config
檔案載入設定。請注意,對於主要工作樹,$GIT_COMMON_DIR
和$GIT_DIR
相同,而其他工作樹的$GIT_DIR
等於$GIT_COMMON_DIR/worktrees/<id>/
。config.worktree
檔案中的設定將覆寫任何其他設定檔中的設定。當啟用
extensions.worktreeConfig
時,如果存在,您必須小心地將某些值從通用設定檔移至主要工作樹的config.worktree
檔案。-
必須將
core.worktree
從$GIT_COMMON_DIR/config
移至$GIT_COMMON_DIR/config.worktree
。 -
如果
core.bare
為 true,則必須將其從$GIT_COMMON_DIR/config
移至$GIT_COMMON_DIR/config.worktree
。根據您對每個工作樹可自訂稀疏檢出設定的需求,調整
core.sparseCheckout
和core.sparseCheckoutCone
的位置也可能有所幫助。預設情況下,git sparse-checkout
內建功能會啟用extensions.worktreeConfig
,為每個工作樹指定這些設定值,並使用$GIT_DIR/info/sparse-checkout
檔案來獨立指定每個工作樹的稀疏性。有關更多詳細資訊,請參閱 git-sparse-checkout[1]。由於歷史原因,無論
core.repositoryFormatVersion
設定為何,都會遵循extensions.worktreeConfig
。
-
- fastimport.unpackLimit
-
如果 git-fast-import[1] 匯入的物件數量低於此限制,則物件將解壓縮為鬆散的物件檔案。但是,如果匯入的物件數量等於或超過此限制,則該包將儲存為一個包。從快速匯入中儲存該包可以使匯入操作更快完成,尤其是在緩慢的檔案系統上。如果未設定,則會改為使用
transfer.unpackLimit
的值。 - feature.*
-
以
feature.
開頭的設定會修改其他設定組的預設值。這些群組由 Git 開發人員社群建立,作為建議的預設值,並且可能會變更。特別是,可能會新增具有不同預設值的新設定選項。 - feature.experimental
-
啟用 Git 的新設定選項,並且正在考慮作為未來預設值。此處包含的設定可能會隨著每個版本(包括次要版本更新)而新增或移除。由於這些設定非常新,因此可能會產生意想不到的互動。如果您有興趣提供有關實驗性功能的回饋,請啟用此設定。新的預設值為
-
fetch.negotiationAlgorithm=skipping
可以透過一次跳過更多提交,減少往返次數,來改善提取協商時間。 -
pack.useBitmapBoundaryTraversal=true
可以透過減少走訪的物件數量來改善點陣圖走訪時間。 -
pack.allowPackReuse=multi
可以透過重複使用來自多個包的物件,而不是僅重複使用一個包,來改善建立包所需的時間。
-
- feature.manyFiles
-
啟用針對工作目錄中具有許多檔案的儲存庫進行最佳化的設定選項。對於許多檔案,
git status
和git checkout
等命令可能會很慢,而這些新預設值可提高效能-
index.skipHash=true
透過不計算尾隨校驗和來加快索引寫入速度。請注意,這將導致早於 2.13.0 的 Git 版本拒絕剖析索引,而早於 2.40.0 的 Git 版本會在git fsck
期間報告索引已損壞。 -
index.version=4
啟用索引中的路徑前置詞壓縮。 -
core.untrackedCache=true
啟用未追蹤的快取。此設定假設 mtime 在您的機器上運作。
-
- fetch.recurseSubmodules
-
此選項控制
git fetch
(以及git pull
中底層的提取) 是否會遞迴提取到已填入的子模組中。此選項可以設定為布林值或on-demand。將其設定為布林值會變更 fetch 和 pull 的行為,當設定為 true 時會無條件遞迴到子模組中,或當設定為 false 時根本不遞迴。當設定為 on-demand 時,fetch 和 pull 僅會在超專案擷取更新子模組參考的提交時,才會遞迴到已填入的子模組中。預設值為 on-demand,或設定為 submodule.recurse 的值。 - fetch.fsckObjects
-
如果設定為 true,則 git-fetch-pack 將檢查所有提取的物件。有關檢查內容,請參閱
transfer.fsckObjects
。預設值為 false。如果未設定,則會改為使用transfer.fsckObjects
的值。 - fetch.fsck.<msg-id>
-
行為類似於
fsck.<msg-id>
,但由 git-fetch-pack[1] 而不是 git-fsck[1] 使用。有關詳細資訊,請參閱fsck.<msg-id>
文件。 - fetch.fsck.skipList
-
行為類似於
fsck.skipList
,但由 git-fetch-pack[1] 而不是 git-fsck[1] 使用。有關詳細資訊,請參閱fsck.skipList
文件。 - fetch.unpackLimit
-
如果透過 Git 原生傳輸提取的物件數量低於此限制,則物件將解壓縮為鬆散的物件檔案。但是,如果接收的物件數量等於或超過此限制,則在新增任何遺失的增量基準後,接收的包將儲存為一個包。從推送中儲存包可以使推送操作更快完成,尤其是在緩慢的檔案系統上。如果未設定,則會改為使用
transfer.unpackLimit
的值。 - fetch.prune
-
如果為 true,則 fetch 會自動表現得好像在命令列上給定
--prune
選項一樣。另請參閱remote.<name>.prune
和 git-fetch[1] 的 PRUNING 章節。 - fetch.pruneTags
-
如果為 true,則 fetch 會自動表現得好像在修剪時提供了
refs/tags/*:refs/tags/*
refspec (如果尚未設定)。這允許設定此選項和fetch.prune
以維持與上游參考的 1=1 對應。另請參閱remote.<name>.pruneTags
和 git-fetch[1] 的 PRUNING 章節。 - fetch.all
-
如果為 true,則 fetch 將嘗試更新所有可用的遠端。可以透過傳遞
--no-all
或明確指定要從中提取的一或多個遠端來覆寫此行為。預設值為 false。 - fetch.output
-
控制 ref 更新狀態的列印方式。有效值為
full
和compact
。預設值為full
。有關詳細資訊,請參閱 git-fetch[1] 中的 OUTPUT 章節。 - fetch.negotiationAlgorithm
-
控制在與伺服器協商要傳送的封包檔案內容時,如何傳送關於本機儲存庫中提交的資訊。設定為 "consecutive" 以使用一個演算法,該演算法會逐一檢查連續的提交。設定為 "skipping" 以使用一個演算法,該演算法會跳過提交以加速收斂,但可能會導致封包檔案大於所需;或設定為 "noop" 以完全不傳送任何資訊,這幾乎肯定會導致封包檔案大於所需,但會跳過協商步驟。設定為 "default" 以覆寫先前所做的設定並使用預設行為。預設值通常為 "consecutive",但如果
feature.experimental
為 true,則預設值為 "skipping"。未知的值會導致 git fetch 發生錯誤。另請參閱 git-fetch[1] 的
--negotiate-only
和--negotiation-tip
選項。 - fetch.showForcedUpdates
-
設定為 false 以在 git-fetch[1] 和 git-pull[1] 命令中啟用
--no-show-forced-updates
。預設值為 true。 - fetch.parallel
-
指定一次可以並行執行的提取操作的最大數量(子模組,或當 git-fetch[1] 的
--multiple
選項生效時的遠端)。值為 0 將提供一些合理的預設值。如果未設定,則預設值為 1。
對於子模組,可以使用
submodule.fetchJobs
設定覆寫此設定。 - fetch.writeCommitGraph
-
設定為 true 以在每次從遠端下載封包檔案的
git fetch
命令之後寫入提交圖。使用--split
選項,大多數執行將在現有的提交圖檔案之上建立一個非常小的提交圖檔案。有時,這些檔案會合併,並且寫入可能需要更長的時間。擁有更新的提交圖檔案有助於許多 Git 命令的效能,包括git merge-base
、git push -f
和git log --graph
。預設值為 false。 - fetch.bundleURI
-
此值儲存一個 URI,用於在從原始 Git 伺服器執行增量提取之前,從套件 URI 下載 Git 物件資料。這類似於 git-clone[1] 中
--bundle-uri
選項的行為。如果提供的套件 URI 包含為增量提取組織的套件清單,則git clone --bundle-uri
將設定fetch.bundleURI
值。如果您修改此值,並且您的儲存庫具有
fetch.bundleCreationToken
值,請在從新的套件 URI 提取之前刪除該fetch.bundleCreationToken
值。 - fetch.bundleCreationToken
-
當使用
fetch.bundleURI
從使用 "creationToken" 啟發式的套件清單進行增量提取時,此組態值會儲存已下載套件的最大creationToken
值。如果廣告的creationToken
不嚴格大於此值,則此值用於防止將來下載套件。建立權杖值由提供特定套件 URI 的提供者選擇。如果您修改
fetch.bundleURI
上的 URI,請務必在提取之前刪除fetch.bundleCreationToken
值的值。 - filter.<driver>.clean
-
用於在簽入時將工作樹檔案的內容轉換為 blob 的命令。有關詳細資訊,請參閱 gitattributes[5]。
- filter.<driver>.smudge
-
用於在簽出時將 blob 物件的內容轉換為工作樹檔案的命令。有關詳細資訊,請參閱 gitattributes[5]。
- format.attach
-
啟用 multipart/mixed 附件作為 format-patch 的預設值。該值也可以是雙引號字串,這將啟用附件作為預設值,並將該值設定為邊界。請參閱 git-format-patch[1] 中的 --attach 選項。要撤銷先前的值,請將其設定為空字串。
- format.from
-
提供 format-patch 的
--from
選項的預設值。接受布林值,或名稱和電子郵件地址。如果為 false,則 format-patch 預設為--no-from
,直接在修補程式郵件的 "From:" 欄位中使用提交作者。如果為 true,則 format-patch 預設為--from
,在修補程式郵件的 "From:" 欄位中使用您的提交者身分,並且如果不同,則在修補程式郵件的正文中包含 "From:" 欄位。如果設定為非布林值,則 format-patch 使用該值而不是您的提交者身分。預設值為 false。 - format.forceInBodyFrom
-
提供 format-patch 的
--[no-]force-in-body-from
選項的預設值。預設值為 false。 - format.numbered
-
一個布林值,可以啟用或停用修補程式主旨中的序列號。它預設為 "auto",僅當有多個修補程式時才啟用它。可以透過將其設定為 "true" 或 "false" 來為所有訊息啟用或停用它。請參閱 git-format-patch[1] 中的 --numbered 選項。
- format.headers
-
要包含在要透過郵件提交的修補程式中的其他電子郵件標頭。請參閱 git-format-patch[1]。
- format.to
- format.cc
-
要包含在要透過郵件提交的修補程式中的其他收件人。請參閱 git-format-patch[1] 中的 --to 和 --cc 選項。
- format.subjectPrefix
-
format-patch 的預設值是輸出帶有 [PATCH] 主旨前綴的檔案。使用此變數來變更該前綴。
- format.coverFromDescription
-
format-patch 用於確定封面信的哪些部分將使用分支描述填寫的預設模式。請參閱 git-format-patch[1] 中的
--cover-from-description
選項。 - format.signature
-
format-patch 的預設值是輸出包含 Git 版本號的簽名。使用此變數來變更該預設值。將此變數設定為空字串 ("") 以抑制簽名產生。
- format.signatureFile
-
其工作方式與 format.signature 完全相同,只是此變數指定的檔案內容將用作簽名。
- format.suffix
-
format-patch 的預設值是輸出帶有後綴
.patch
的檔案。使用此變數來變更該後綴(如果要包含點,請確保包含點)。 - format.encodeEmailHeaders
-
使用 "Q-encoding"(在 RFC 2047 中描述)對具有非 ASCII 字元的電子郵件標頭進行編碼,以進行電子郵件傳輸。預設值為 true。
- format.pretty
-
log/show/whatchanged 命令的預設漂亮格式。請參閱 git-log[1]、git-show[1]、git-whatchanged[1]。
- 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",僅當有多個修補程式時才產生封面信。預設值為 false。
- format.outputDirectory
-
設定一個自訂目錄以儲存結果檔案,而不是目前的工作目錄。將建立所有目錄元件。
- format.filenameMaxLength
-
format-patch
命令產生的輸出檔案名稱的最大長度;預設值為 64。可以被--filename-max-length=<n>
命令列選項覆寫。 - format.useAutoBase
-
一個布林值,可讓您預設啟用 format-patch 的
--base=auto
選項。也可以設定為 "whenAble",以允許在有適當的基本可用時啟用--base=auto
,但在其他情況下跳過新增基本資訊,而不會導致格式失效。 - format.notes
-
提供 format-patch 的
--notes
選項的預設值。接受布林值或指定從何處取得註解的 ref。如果為 false,則 format-patch 預設為--no-notes
。如果為 true,則 format-patch 預設為--notes
。如果設定為非布林值,則 format-patch 預設為--notes=<ref>
,其中ref
是非布林值。預設值為 false。如果想要使用 ref
refs/notes/true
,請改用該文字。可以多次指定此設定,以便包含多個註解 ref。在這種情況下,它的行為將與傳入的多個
--[no-]notes[=]
選項類似。也就是說,值為true
將顯示預設註解,值為<ref>
也將顯示來自該註解 ref 的註解,而值為false
將否定先前的設定並且不顯示註解。例如,
[format] notes = true notes = foo notes = false notes = bar
將僅顯示來自
refs/notes/bar
的註解。 - format.mboxrd
-
一個布林值,當使用
--stdout
時啟用穩健的 "mboxrd" 格式,以逸出 "^>+From " 行。 - format.noprefix
-
如果設定,則不在修補程式中顯示任何來源或目的地前綴。這等同於
git diff
使用的diff.noprefix
選項(但format-patch
不會遵守該選項)。請注意,透過設定此項,您產生的任何修補程式的接收者都必須使用-p0
選項來套用它們。 - fsck.<msg-id>
-
在 fsck 期間,git 可能會發現舊版資料的問題,這些問題不會由目前版本的 git 產生,並且如果設定了
transfer.fsckObjects
,則不會透過網路傳送。此功能旨在支援使用包含此類資料的舊版儲存庫。設定
fsck.<msg-id>
將被 git-fsck[1] 拾取,但要接受推送此類資料,請改為設定receive.fsck.<msg-id>
,或者要複製或提取它,請設定fetch.fsck.<msg-id>
。其餘文件為簡潔起見討論
fsck.*
,但這同樣適用於對應的receive.fsck.*
和fetch.fsck.*
變數。與
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: invalid author/committer line - missing email」表示設定fsck.missingEmail = ignore
將會隱藏這個問題。一般而言,使用
fsck.skipList
列舉現有存在問題的物件會比較好,而不是列出這些有問題的物件共有的損壞類型以忽略它們,因為後者會讓新的相同類型損壞被忽略而沒注意到。設定未知的
fsck.<msg-id>
值會導致 fsck 停止,但對receive.fsck.<msg-id>
和fetch.fsck.<msg-id>
執行相同的操作只會導致 git 發出警告。請參閱 git-fsck[1] 的
Fsck Messages
章節,以了解<msg-id>
支援的值。 - 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 版之後,改用雜湊實作,因此現在沒有理由預先排序清單。
- fsmonitor.allowRemote
-
依預設,fsmonitor 常駐程式拒絕使用網路掛載的儲存庫。將
fsmonitor.allowRemote
設定為true
會覆寫此行為。僅在core.fsmonitor
設定為true
時才會生效。 - fsmonitor.socketDir
-
這個 macOS 特定的選項 (如果已設定) 會指定建立用於 fsmonitor 常駐程式與各種 Git 命令之間通訊的 Unix 網域 socket 的目錄。該目錄必須位於原生的 macOS 檔案系統上。僅在
core.fsmonitor
設定為true
時才會生效。 - gc.aggressiveDepth
-
git gc --aggressive 使用的增量壓縮演算法中的深度參數。預設值為 50,這是未使用
--aggressive
時--depth
選項的預設值。有關更多詳細資訊,請參閱 git-repack[1] 中
--depth
選項的文件。 - gc.aggressiveWindow
-
git gc --aggressive 使用的增量壓縮演算法中的視窗大小參數。預設值為 250,這比預設的
--window
10 大得多。有關更多詳細資訊,請參閱 git-repack[1] 中
--window
選項的文件。 - gc.auto
-
當儲存庫中大約有超過此數量的鬆散物件時,
git gc --auto
會將它們打包。一些 Porcelain 命令會不時使用此命令執行輕量級的垃圾收集。預設值為 6700。將此設定為 0 不僅會停用基於鬆散物件數量的自動打包,還會停用
git gc --auto
用於判斷是否有工作要做的任何其他啟發式方法,例如gc.autoPackLimit
。 - gc.autoPackLimit
-
當儲存庫中有超過此數量的未標記
*.keep
檔案的套件時,git gc --auto
會將它們合併成一個更大的套件。預設值為 50。將此設定為 0 會停用它。將gc.auto
設定為 0 也會停用此設定。請參閱下面的
gc.bigPackThreshold
組態變數。使用時,它會影響自動套件限制的工作方式。 - gc.autoDetach
-
如果系統支援,則讓
git gc --auto
立即返回並在背景執行。預設為 true。如果未設定maintenance.autoDetach
,則此組態變數會作為回退方案。 - gc.bigPackThreshold
-
如果非零,則當執行
git gc
時,會保留所有大於此限制的非雜亂套件。這與--keep-largest-pack
非常相似,只不過是保留所有符合臨界值的非雜亂套件,而不僅僅是最大的套件。預設值為零。支援常見的單位後綴 k、m 或 g。請注意,如果保留的套件數量超過 gc.autoPackLimit,則會忽略此組態變數,除了基本套件以外的所有套件都會重新打包。此後,套件數量應低於 gc.autoPackLimit,並且應再次遵循 gc.bigPackThreshold。
如果估計
git repack
平穩運行所需的記憶體量不可用,並且未設定gc.bigPackThreshold
,則也會排除最大的套件(這相當於使用--keep-largest-pack
執行git gc
)。 - gc.writeCommitGraph
-
如果為 true,則當執行 git-gc[1] 時,gc 會重寫 commit-graph 檔案。當使用
git gc --auto
時,如果需要 housekeeping,則會更新 commit-graph。預設值為 true。有關詳細資訊,請參閱 git-commit-graph[1]。 - gc.logExpiry
-
如果檔案 gc.log 存在,則
git gc --auto
會列印其內容並以狀態零結束,除非該檔案的時效超過 gc.logExpiry。預設值為 "1.day"。有關更多指定其值的方式,請參閱gc.pruneExpire
。 - gc.packRefs
-
在儲存庫中執行
git pack-refs
會導致 1.5.1.2 之前的 Git 版本無法透過 HTTP 等簡易傳輸方式複製。此變數決定 git gc 是否執行git pack-refs
。可以將其設定為notbare
以在所有非裸儲存庫中啟用它,或者可以將其設定為布林值。預設值為true
。 - gc.cruftPacks
-
將無法連線到的物件儲存在雜亂套件中(請參閱 git-repack[1]),而不是作為鬆散物件。預設值為
true
。 - gc.maxCruftSize
-
重新打包時限制新雜亂套件的大小。當除了
--max-cruft-size
之外還指定時,命令列選項優先。請參閱 git-repack[1] 的--max-cruft-size
選項。 - gc.pruneExpire
-
當執行 git gc 時,它將呼叫 prune --expire 2.weeks.ago(如果使用
gc.cruftPacks
或--cruft
使用雜亂套件,則呼叫 repack --cruft --cruft-expiration 2.weeks.ago)。使用此組態變數覆寫寬限期。值 "now" 可用於停用此寬限期並立即修剪無法連線到的物件,或者可以使用 "never" 來禁止修剪。當 git gc 與另一個寫入儲存庫的處理序同時執行時,此功能有助於防止損壞;請參閱 git-gc[1] 的「NOTES」章節。 - 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> 的 ref。
- gc.reflogExpireUnreachable
- gc.<pattern>.reflogExpireUnreachable
-
git reflog expire 會移除早於此時間且無法從目前提示連線到的 reflog 項目;預設值為 30 天。值 "now" 會立即過期所有項目,而 "never" 會完全禁止過期。中間使用 "<pattern>"(例如 "refs/stash"),該設定僅適用於符合 <pattern> 的 ref。
這些類型的項目通常是使用
git commit --amend
或git rebase
的結果而建立的,並且是在發生修改或重新設定基底之前的提交。由於這些變更不屬於目前的專案,因此大多數使用者都希望盡快使其過期,這就是預設值比gc.reflogExpire
更積極的原因。 - gc.recentObjectsHook
-
當考慮是否要移除物件時(無論是在產生雜亂套件還是將無法連線到的物件儲存為鬆散物件時),請使用 shell 執行指定的命令。將其輸出解釋為 Git 會視為「最近」的物件 ID,無論其存在時間長短。透過將其 mtime 視為「現在」,無論其真實存在時間長短,輸出中提及的任何物件(及其子代)都將被保留。
輸出必須每行僅包含一個十六進位物件 ID,不得包含其他內容。儲存庫中找不到的物件會被忽略。支援多個 Hook,但所有 Hook 都必須成功結束,否則操作(產生雜亂套件或解壓縮無法連線到的物件)將會停止。
- gc.repackFilter
-
重新打包時,請使用指定的篩選器將某些物件移到單獨的套件檔案中。請參閱 git-repack[1] 的
--filter=<filter-spec>
選項。 - gc.repackFilterTo
-
當重新打包和使用篩選器時,請參閱
gc.repackFilter
,指定的路徑將被用來建立包含已篩選掉物件的 packfile。警告:指定的路徑應該是可存取的,例如使用 Git alternates 機制,否則儲存庫可能會被 Git 視為損毀,因為它可能無法存取該 packfile 中的物件。請參閱 git-repack[1] 的--filter-to=<dir>
選項,以及 gitrepository-layout[5] 的objects/info/alternates
區段。 - gc.rerereResolved
-
當執行 git rerere gc 時,先前您已解決的衝突合併記錄將保留這麼多天。您也可以使用更容易理解的格式,例如 "1.month.ago" 等。預設值為 60 天。請參閱 git-rerere[1]。
- gc.rerereUnresolved
-
當執行 git rerere gc 時,您尚未解決的衝突合併記錄將保留這麼多天。您也可以使用更容易理解的格式,例如 "1.month.ago" 等。預設值為 15 天。請參閱 git-rerere[1]。
- gitcvs.commitMsgAnnotation
-
將此字串附加到每個提交訊息。設定為空字串以停用此功能。預設為 "via git-CVS emulator"。
- gitcvs.enabled
-
是否為此儲存庫啟用 CVS 伺服器介面。請參閱 git-cvsserver[1]。
- gitcvs.logFile
-
CVS 伺服器介面記錄各種內容的日誌檔路徑。請參閱 git-cvsserver[1]。
- gitcvs.usecrlfattr
-
如果為 true,伺服器將查找檔案的行尾轉換屬性,以判斷要使用的
-k
模式。如果屬性強制 Git 將檔案視為文字,則-k
模式將留空,以便 CVS 客戶端將其視為文字。如果它們抑制文字轉換,則檔案將設定為 -kb 模式,這會抑制客戶端可能執行的任何換行符號處理。如果屬性不允許判斷檔案類型,則會使用gitcvs.allBinary
。請參閱 gitattributes[5]。 - gitcvs.allBinary
-
如果
gitcvs.usecrlfattr
無法解析要使用的正確 -kb 模式,則會使用此設定。如果為 true,所有未解析的檔案都會以 -kb 模式傳送至客戶端。這會導致客戶端將它們視為二進位檔案,從而抑制它可能執行的任何換行符號處理。或者,如果設定為 "guess",則會檢查檔案的內容以判斷它是否為二進位檔案,類似於core.autocrlf
。 - gitcvs.dbName
-
git-cvsserver 用於快取從 Git 儲存庫衍生的修訂資訊的資料庫。確切的含義取決於使用的資料庫驅動程式,對於 SQLite(預設驅動程式),這是一個檔案名稱。支援變數替換(詳情請參閱 git-cvsserver[1])。不得包含分號 (
;
)。預設值:%Ggitcvs.%m.sqlite - gitcvs.dbDriver
-
使用的 Perl DBI 驅動程式。您可以在這裡指定任何可用的驅動程式,但它可能無法正常運作。git-cvsserver 已使用 DBD::SQLite 測試,據報告可與 DBD::Pg 搭配運作,並且據報告無法與 DBD::mysql 搭配運作。實驗性功能。不得包含雙冒號 (
:
)。預設值:SQLite。請參閱 git-cvsserver[1]。 - gitcvs.dbUser, gitcvs.dbPass
-
資料庫使用者和密碼。只有在設定
gitcvs.dbDriver
時才有用,因為 SQLite 沒有資料庫使用者和/或密碼的概念。gitcvs.dbUser 支援變數替換(詳情請參閱 git-cvsserver[1])。 - gitcvs.dbTableNamePrefix
-
資料庫表名稱前綴。附加到使用的任何資料庫表的名稱,允許單個資料庫用於多個儲存庫。支援變數替換(詳情請參閱 git-cvsserver[1])。任何非字母字元都會被底線取代。
除了 gitcvs.usecrlfattr
和 gitcvs.allBinary
之外的所有 gitcvs 變數也可以指定為 gitcvs.<access_method>.<varname>(其中 access_method 是 "ext" 和 "pserver" 其中之一),使其僅適用於給定的存取方法。
- gitweb.category
- gitweb.description
- gitweb.owner
- gitweb.url
-
請參閱 gitweb[1] 以取得說明。
- gitweb.avatar
- gitweb.blame
- gitweb.grep
- gitweb.highlight
- gitweb.patches
- gitweb.pickaxe
- gitweb.remote_heads
- gitweb.showSizes
- gitweb.snapshot
-
請參閱 gitweb.conf[5] 以取得說明。
- gpg.program
-
當建立或驗證 PGP 簽章時,使用此自訂程式而不是在
$PATH
上找到的 "gpg
"。該程式必須支援與 GPG 相同的命令列介面,也就是說,要驗證分離式簽章,會執行 "gpg --verify $signature - <$file
",並且預期程式會以代碼 0 退出,以表示良好的簽章。要產生 ASCII 編碼的分離式簽章,"gpg -bsau $key
" 的標準輸入會饋送要簽章的內容,並且預期程式會將結果傳送到其標準輸出。 - gpg.format
-
指定在使用
--gpg-sign
簽章時要使用的金鑰格式。預設值為 "openpgp"。其他可能的值為 "x509"、"ssh"。請參閱 gitformat-signature[5] 以了解簽章格式,該格式會根據選取的
gpg.format
而有所不同。 - gpg.<format>.program
-
使用此設定來自訂用於您選擇的簽章格式的程式。(請參閱
gpg.program
和gpg.format
)gpg.program
仍然可以用作gpg.openpgp.program
的舊式同義詞。gpg.x509.program
的預設值為 "gpgsm",而gpg.ssh.program
的預設值為 "ssh-keygen"。 - gpg.minTrustLevel
-
指定簽章驗證的最低信任等級。如果未設定此選項,則合併操作的簽章驗證需要至少具有
marginal
信任的金鑰。其他執行簽章驗證的操作需要至少具有undefined
信任的金鑰。設定此選項會覆蓋所有操作所需的信任等級。支援的值(按重要性遞增排序)-
undefined
-
never
-
marginal
-
fully
-
ultimate
-
- gpg.ssh.defaultKeyCommand
-
當未設定 user.signingkey 且要求 ssh 簽章時,將執行此命令。在成功退出時,預期其輸出的第一行中會有一個以
key::
為字首的有效 ssh 公鑰。當靜態設定user.signingKey
不切實際時,這允許腳本動態查找正確的公鑰。例如,當金鑰或 SSH 憑證頻繁輪換時,或者正確金鑰的選擇取決於 Git 未知的外部因素時。 - gpg.ssh.allowedSignersFile
-
一個包含您願意信任的 ssh 公鑰的檔案。該檔案包含一行或多行主體,後跟一個 ssh 公鑰。例如:
user1@example.com,user2@example.com ssh-rsa AAAAX1...
。詳情請參閱 ssh-keygen(1) 的 "ALLOWED SIGNERS"。主體僅用於識別金鑰,並且在驗證簽章時可用。SSH 沒有像 gpg 那樣的信任等級概念。為了能夠區分有效簽章和受信任簽章,當公鑰存在於 allowedSignersFile 中時,簽章驗證的信任等級會設定為
fully
。否則,信任等級為undefined
,並且 git verify-commit/tag 將失敗。此檔案可以設定為儲存庫之外的位置,並且每個開發人員都維護自己的信任儲存區。中央儲存庫伺服器可以從具有推送存取權的 ssh 金鑰自動產生此檔案,以驗證程式碼。在公司環境中,此檔案很可能是在全域位置從已處理開發人員 ssh 金鑰的自動化程式產生。
僅允許簽章提交的儲存庫可以使用相對於工作樹最上層的路徑將檔案儲存在儲存庫本身中。這樣,只有具有已有效金鑰的提交者才能在金鑰環中新增或變更金鑰。
自 OpensSSH 8.8 以來,此檔案允許使用 valid-after & valid-before 選項指定金鑰生命週期。如果簽章金鑰在簽章建立時有效,則 Git 會將簽章標記為有效。這允許使用者變更簽章金鑰,而不會使所有先前建立的簽章失效。
使用帶有 cert-authority 選項的 SSH CA 金鑰(請參閱 ssh-keygen(1) 的 "CERTIFICATES")也是有效的。
- gpg.ssh.revocationFile
-
SSH KRL 或已撤銷公鑰的清單(不帶主體前綴)。詳情請參閱 ssh-keygen(1)。如果在此檔案中找到公鑰,則它將始終被視為具有 "never" 的信任等級,並且簽章將顯示為無效。
- 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
選項來選擇 basic 和 extended 之間。 - grep.extendedRegexp
-
如果設定為 true,則預設啟用
--extended-regexp
選項。當grep.patternType
選項設定為 default 以外的值時,此選項會被忽略。 - grep.threads
-
要使用的 grep 工作執行緒數量。如果未設定(或設定為 0),Git 將使用與可用邏輯核心數量一樣多的執行緒。
- grep.fullName
-
如果設定為 true,則預設啟用
--full-name
選項。 - grep.fallbackToNoIndex
-
如果設定為 true,則在
git grep
於 git 儲存庫外部執行時,會回退到git grep --no-index
。預設值為 false。 - gui.commitMsgWidth
-
定義 git-gui[1] 中的提交訊息視窗寬度。「75」為預設值。
- gui.diffContext
-
指定 git-gui[1] 所做的 diff 呼叫應使用多少上下文行。預設值為「5」。
- gui.displayUntracked
-
決定 git-gui[1] 是否在檔案清單中顯示未追蹤的檔案。預設值為「true」。
- gui.encoding
-
指定在 git-gui[1] 和 gitk[1] 中顯示檔案內容時使用的預設字元編碼。可以透過設定相關檔案的 encoding 屬性來覆寫(請參閱 gitattributes[5])。如果未設定此選項,工具會預設為使用地區編碼。
- gui.matchTrackingBranch
-
決定使用 git-gui[1] 建立的新分支是否預設追蹤具有匹配名稱的遠端分支。預設值:「false」。
- gui.newBranchTemplate
-
在使用 git-gui[1] 建立新分支時,用作建議的名稱。
- gui.pruneDuringFetch
-
如果 git-gui[1] 在執行擷取時應修剪遠端追蹤分支,則為「true」。預設值為「false」。
- gui.trustmtime
-
決定 git-gui[1] 是否應信任檔案修改時間戳記。預設情況下,不信任時間戳記。
- gui.spellingDictionary
-
指定在 git-gui[1] 中用於拼字檢查提交訊息的字典。當設定為「none」時,會關閉拼字檢查。
- gui.fastCopyBlame
-
如果為 true,git gui blame 會使用
-C
而不是-C -C
來進行原始位置偵測。這會在大型儲存庫上顯著加快 blame 的速度,但會犧牲較不徹底的複製偵測。 - gui.copyBlameThreshold
-
指定在 git gui blame 原始位置偵測中使用的閾值,以字母數字字元衡量。有關複製偵測的更多資訊,請參閱 git-blame[1] 手冊。
- gui.blamehistoryctx
-
指定當從 git gui blame 叫用「顯示歷史上下文」選單項目時,在 gitk[1] 中為選定提交顯示的歷史上下文半徑(以天為單位)。如果此變數設定為零,則會顯示整個歷史記錄。
- guitool.<name>.cmd
-
指定在叫用 git-gui[1] 的
Tools
選單的對應項目時要執行的 shell 命令列。此選項對於每個工具都是必要的。該命令從工作目錄的根目錄執行,並且在環境中接收工具的名稱作為GIT_GUITOOL
,目前選定檔案的名稱作為 FILENAME,以及目前分支的名稱作為 CUR_BRANCH(如果 head 已分離,則 CUR_BRANCH 為空)。 - guitool.<name>.needsFile
-
僅當在 GUI 中選擇了 diff 時才執行該工具。它保證 FILENAME 不為空。
- guitool.<name>.noConsole
-
靜默執行命令,而不建立視窗來顯示其輸出。
- guitool.<name>.noRescan
-
在工具完成執行後,不要重新掃描工作目錄以尋找變更。
- guitool.<name>.confirm
-
在實際執行該工具之前顯示確認對話方塊。
- guitool.<name>.argPrompt
-
向使用者請求字串引數,並透過
ARGS
環境變數將其傳遞給工具。由於請求引數表示確認,因此如果啟用此選項,confirm 選項無效。如果選項設定為 true、yes 或 1,則對話方塊會使用內建的通用提示;否則,會使用變數的確切值。 - guitool.<name>.revPrompt
-
向使用者請求單個有效的修訂版本,並設定
REVISION
環境變數。在其他方面,此選項與 argPrompt 相似,並且可以與其一起使用。 - guitool.<name>.revUnmerged
-
在 revPrompt 子對話方塊中僅顯示未合併的分支。這對於類似於合併或變基的工具很有用,但不適用於 checkout 或 reset 之類的操作。
- guitool.<name>.title
-
指定用於提示對話方塊的標題。預設值為工具名稱。
- guitool.<name>.prompt
-
指定要在對話方塊頂部顯示的通用提示字串,在 argPrompt 和 revPrompt 的子區段之前。預設值包含實際的命令。
- help.browser
-
指定將用於以 web 格式顯示說明文件的瀏覽器。請參閱 git-help[1]。
- help.format
-
覆寫 git-help[1] 使用的預設說明格式。支援 man、info、web 和 html 值。man 為預設值。web 和 html 相同。
- help.autoCorrect
-
如果 git 偵測到拼寫錯誤,並且可以識別出與錯誤類似的確切有效命令,則 git 會嘗試建議正確的命令,甚至自動執行建議。可能的配置值為
-
0(預設值):顯示建議的命令。
-
正數:在指定的分秒(0.1 秒)後執行建議的命令。
-
「immediate」:立即執行建議的命令。
-
「prompt」:顯示建議並提示確認以執行命令。
-
「never」:不要執行或顯示任何建議的命令。
-
- help.htmlPath
-
指定 HTML 文件所在的路徑。支援檔案系統路徑和 URL。當以 web 格式顯示說明文件時,HTML 頁面將會以這個路徑作為前綴。這預設為您的 Git 安裝的文件路徑。
- http.proxy
-
覆寫 HTTP Proxy,通常使用 http_proxy、https_proxy 和 all_proxy 環境變數進行配置(請參閱
curl(1)
)。除了 curl 所理解的語法之外,還可以指定一個具有使用者名稱但沒有密碼的 proxy 字串,在這種情況下,git 會嘗試以與其他憑證相同的方式獲取一個。有關更多資訊,請參閱 gitcredentials[7]。因此,語法為 [protocol://][user[:password]@]proxyhost[:port][/path]。這可以在每個遠端基礎上覆寫;請參閱 remote.<name>.proxy任何 proxy,無論如何配置,都必須完全透明,並且不得以任何方式修改、轉換或緩衝請求或回應。已知不完全透明的 proxy 會導致 Git 的各種形式的損壞。
- http.proxyAuthMethod
-
設定用於驗證 HTTP Proxy 的方法。僅當配置的 proxy 字串包含使用者名稱部分(即,形式為 user@host 或 user@host:port)時,此設定才會生效。這可以在每個遠端基礎上覆寫;請參閱
remote.<name>.proxyAuthMethod
。兩者都可以由GIT_HTTP_PROXY_AUTHMETHOD
環境變數覆寫。可能的值為-
anyauth
- 自動選擇合適的驗證方法。假設 proxy 以 407 狀態碼和一個或多個具有支援的驗證方法的 Proxy-authenticate 標頭回應未驗證的請求。這是預設值。 -
basic
- HTTP 基本驗證 -
digest
- HTTP 摘要驗證;這可防止密碼以明文傳輸到 proxy -
negotiate
- GSS-Negotiate 驗證(比較curl(1)
的 --negotiate 選項) -
ntlm
- NTLM 驗證(比較curl(1)
的 --ntlm 選項)
-
- http.proxySSLCert
-
儲存用於驗證 HTTPS Proxy 的用戶端憑證的檔案路徑名稱。可以由
GIT_PROXY_SSL_CERT
環境變數覆寫。 - http.proxySSLKey
-
儲存用於驗證 HTTPS Proxy 的私鑰的檔案路徑名稱。可以由
GIT_PROXY_SSL_KEY
環境變數覆寫。 - http.proxySSLCertPasswordProtected
-
啟用 Git 的 proxy SSL 憑證密碼提示。否則,如果憑證或私鑰已加密,OpenSSL 會提示使用者,可能多次。可以由
GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED
環境變數覆寫。 - http.proxySSLCAInfo
-
包含憑證套件的檔案路徑名稱,該套件應用於在使用 HTTPS Proxy 時驗證 proxy。可以由
GIT_PROXY_SSL_CAINFO
環境變數覆寫。 - http.emptyAuth
-
嘗試驗證而不尋找使用者名稱或密碼。這可以用於嘗試 GSS-Negotiate 驗證,而無需在 URL 中指定使用者名稱,因為 libcurl 通常需要使用者名稱才能進行驗證。
- http.proactiveAuth
-
嘗試進行身份驗證,而無需先進行未經驗證的嘗試並接收 401 回應。這可以用於確保所有請求都經過身份驗證。如果
http.emptyAuth
設定為 true,則此值無效。如果使用的憑證輔助程式指定了身份驗證方案(即透過
authtype
欄位),則將使用該值;如果在沒有方案的情況下提供了使用者名稱和密碼,則將使用基本身份驗證。選項的值決定了從輔助程式請求的方案。可能的值為-
basic
- 從輔助程式請求基本身份驗證。 -
auto
- 允許輔助程式選擇適當的方案。 -
none
- 停用主動身份驗證。
請注意,此設定應始終搭配 TLS 使用,否則如果選擇基本身份驗證,很容易意外洩露純文字憑證。
-
- http.delegation
-
控制 GSSAPI 憑證委派。在 libcurl 7.21.7 版中,預設會停用委派。設定此參數以告知伺服器在使用者憑證方面允許委派哪些內容。與 GSS/kerberos 一起使用。可能的值為
-
none
- 不允許任何委派。 -
policy
- 僅當 Kerberos 服務票證中設定了 OK-AS-DELEGATE 標誌時才委派,這與領域政策有關。 -
always
- 無條件允許伺服器委派。
-
- http.extraHeader
-
與伺服器通訊時傳遞額外的 HTTP 標頭。如果存在多個此類條目,則所有條目都會新增為額外標頭。為了允許覆寫從系統設定繼承的設定,空值會將額外標頭重設為空清單。
- http.cookieFile
-
包含先前儲存的 Cookie 行的檔案路徑名稱,如果它們與伺服器匹配,則應在 Git http 會話中使用。要從中讀取 Cookie 的檔案格式應為純 HTTP 標頭或 Netscape/Mozilla Cookie 檔案格式(請參閱
curl(1)
)。將其設定為空字串,以僅接受來自伺服器的新 Cookie,並在同一個連線中的後續請求中將它們傳回。請注意,除非設定了 http.saveCookies,否則以 http.cookieFile 指定的檔案僅用作輸入。 - http.saveCookies
-
如果設定,則將請求期間收到的 Cookie 儲存到 http.cookieFile 指定的檔案中。如果 http.cookieFile 未設定或設定為空字串,則無效。
- http.version
-
與伺服器通訊時使用指定的 HTTP 協定版本。如果您要強制使用預設值。可用和預設版本取決於 libcurl。目前此選項的可能值為
-
HTTP/2
-
HTTP/1.1
-
- http.curloptResolve
-
主機名稱解析資訊,libcurl 在傳送 HTTP 請求時會先使用此資訊。此資訊應採用以下格式之一
-
[+]HOST:PORT:ADDRESS[,ADDRESS]
-
-HOST:PORT
第一種格式會將所有對給定
HOST:PORT
的請求重新導向到提供的ADDRESS
(一個或多個)。第二種格式會清除該HOST:PORT
組合的所有先前設定值。為了允許輕鬆覆寫從系統設定繼承的所有設定,空值會將所有解析資訊重設為空清單。 -
- 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
-
啟用 Git 的 SSL 憑證密碼提示。否則,如果憑證或私密金鑰已加密,OpenSSL 可能會多次提示使用者。可由
GIT_SSL_CERT_PASSWORD_PROTECTED
環境變數覆寫。 - http.sslCAInfo
-
在透過 HTTPS 擷取或推送時包含用於驗證對等方的憑證檔案。可由
GIT_SSL_CAINFO
環境變數覆寫。 - http.sslCAPath
-
在透過 HTTPS 擷取或推送時包含用於驗證對等方的 CA 憑證檔案的路徑。可由
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 開始,Secure Channel 後端可以使用透過
http.sslCAInfo
提供的憑證套件,但這會覆寫 Windows 憑證存放區。由於預設情況下不希望這樣做,因此當透過http.sslBackend
設定schannel
後端時,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
-
要跨請求保留的 curl 會話數(跨插槽計數)。它們不會隨著 curl_easy_cleanup() 結束,直到呼叫 http_cleanup() 為止。如果未定義 USE_CURL_MULTI,則此值將上限為 1。預設為 1。
- http.postBuffer
-
智慧型 HTTP 傳輸將資料 POST 到遠端系統時所用緩衝區的最大大小(以位元組為單位)。對於大於此緩衝區大小的請求,會使用 HTTP/1.1 和 Transfer-Encoding: chunked,以避免在本機建立大型封裝檔案。預設值為 1 MiB,這對於大多數請求來說已足夠。
請注意,提高此限制僅對停用分塊傳輸編碼有效,因此僅應在遠端伺服器或 Proxy 僅支援 HTTP/1.0 或不符合 HTTP 標準時使用。一般來說,提高此值並不是解決大多數推送問題的有效方法,但可能會顯著增加記憶體消耗,因為即使對於小型推送也會配置整個緩衝區。
- 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 伺服器的 HTTP USER_AGENT 字串。預設值表示 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 的元素進行比較
-
協定(例如,
https
在https://example.com/
中)。此欄位必須在設定金鑰和 URL 之間完全匹配。 -
主機/網域名稱(例如,
example.com
在https://example.com/
中)。此欄位必須在設定金鑰和 URL 之間匹配。可以指定*
作為主機名稱的一部分,以匹配此層級的所有子網域。例如,https://*.example.com/
將匹配https://foo.example.com/
,但不匹配https://foo.bar.example.com/
。 -
連接埠號碼(例如,
http://example.com:8080/
中的8080
)。此欄位必須與設定金鑰和 URL 完全一致。省略的連接埠號碼會在比對前自動轉換為該協定的正確預設值。 -
路徑(例如,
https://example.com/repo.git
中的repo.git
)。設定金鑰的路徑欄位必須與 URL 的路徑欄位完全一致,或是 URL 路徑中以斜線分隔的路徑元素的字首。這表示路徑為foo/
的設定金鑰會符合 URL 路徑foo/bar
。字首只能在斜線 (/
) 邊界上比對。較長的符合項目優先(因此,路徑為foo/bar
的設定金鑰會比僅有路徑foo/
的設定金鑰更符合 URL 路徑foo/bar
)。 -
使用者名稱(例如,
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]。預設值為 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:// 主機的預設值為 143,imaps:// 主機的預設值為 993。當設定 imap.tunnel 時會忽略。
- imap.sslverify
-
用於啟用/停用 SSL/TLS 連線所使用之伺服器憑證驗證的布林值。預設值為
true
。當設定 imap.tunnel 時會忽略。 - imap.preformattedHTML
-
用於在傳送修補程式時啟用/停用 HTML 編碼使用的布林值。HTML 編碼的修補程式會以 <pre> 括住,且內容類型為 text/html。諷刺的是,啟用此選項會導致 Thunderbird 將修補程式以 plain/text、format=fixed 電子郵件傳送。預設值為
false
。 - imap.authMethod
-
指定使用 IMAP 伺服器進行驗證的驗證方法。如果 Git 是以 NO_CURL 選項建置的,或如果您的 curl 版本早於 7.34.0,或如果您以
--no-curl
選項執行 git-imap-send,則唯一支援的方法是 CRAM-MD5。如果未設定,則 git imap-send 會使用基本的 IMAP 純文字 LOGIN 命令。 - include.path
- includeIf.<condition>.path
-
用於包含其他設定檔的特殊變數。請參閱主要 git-config[1] 文件中的「設定檔」章節,特別是「包含」和「條件式包含」子章節。
- index.recordEndOfIndexEntries
-
指定索引檔是否應包含「索引條目結尾」區段。這可以減少多處理器電腦上的索引載入時間,但在使用 2.20 之前的 Git 版本讀取索引時,會產生「忽略 EOIE 擴充功能」訊息。如果已明確啟用 index.threads,則預設值為 true,否則為 false。
- index.recordOffsetTable
-
指定索引檔是否應包含「索引條目偏移表」區段。這可以減少多處理器電腦上的索引載入時間,但在使用 2.20 之前的 Git 版本讀取索引時,會產生「忽略 IEOT 擴充功能」訊息。如果已明確啟用 index.threads,則預設值為 true,否則為 false。
- index.sparse
-
啟用時,使用稀疏目錄條目寫入索引。除非同時啟用
core.sparseCheckout
和core.sparseCheckoutCone
,否則此設定無效。預設值為 false。 - index.threads
-
指定載入索引時要產生的執行緒數。這旨在減少多處理器電腦上的索引載入時間。指定 0 或 true 將導致 Git 自動偵測 CPU 數量並據此設定執行緒數。指定 1 或 false 將停用多執行緒。預設值為 true。
- index.version
-
指定應使用哪個版本初始化新的索引檔。這不會影響現有的儲存庫。如果已啟用
feature.manyFiles
,則預設值為 4。 - index.skipHash
-
啟用時,請勿計算索引檔的尾端雜湊。這會加快操作索引的 Git 命令,例如
git add
、git commit
或git status
。不要儲存總和檢查碼,而是寫入一組尾隨的位元組,其值為零,表示已略過計算。如果您啟用
index.skipHash
,則早於 2.13.0 的 Git 用戶端將會拒絕剖析索引,而早於 2.40.0 的 Git 用戶端會在執行git fsck
時報告錯誤。
-
init.templateDir
-
指定將從中複製範本的目錄。(請參閱 git-init[1] 的「範本目錄」章節。)
-
init.defaultBranch
-
允許覆寫預設分支名稱,例如在初始化新的儲存庫時。
-
init.defaultObjectFormat
-
允許覆寫新儲存庫的預設物件格式。請參閱 git-init[1] 中的
--object-format=
。命令列選項和GIT_DEFAULT_HASH
環境變數都優先於此設定。 -
init.defaultRefFormat
-
允許覆寫新儲存庫的預設參考儲存格式。請參閱 git-init[1] 中的
--ref-format=
。命令列選項和GIT_DEFAULT_REF_FORMAT
環境變數都優先於此設定。 - instaweb.browser
-
指定將用於在 gitweb 中瀏覽您工作儲存庫的程式。請參閱 git-instaweb[1]。
- instaweb.httpd
-
要在您工作儲存庫上啟動 gitweb 的 HTTP 精靈命令列。請參閱 git-instaweb[1]。
- instaweb.local
-
如果為 true,git-instaweb[1] 啟動的 Web 伺服器將會繫結至本機 IP (127.0.0.1)。
- instaweb.modulePath
-
git-instaweb[1] 要使用的預設模組路徑,而不是 /usr/lib/apache2/modules。僅在 httpd 為 Apache 時使用。
- instaweb.port
-
將 gitweb httpd 繫結到的連接埠號碼。請參閱 git-instaweb[1]。
- interactive.singleKey
-
如果設定為 true,則允許使用者在互動式命令中使用單一按鍵提供單字母輸入(即,無需按下 Enter 鍵)。目前,此設定用於 git-add[1]、git-checkout[1]、git-restore[1]、git-commit[1]、git-reset[1] 和 git-stash[1] 的
--patch
模式。 - interactive.diffFilter
-
當互動式命令(例如
git add --patch
)顯示彩色差異時,git 會透過此設定變數定義的 shell 命令管道差異。命令可能會進一步標示差異以供人類閱讀,但前提是它會保留與原始差異行的一對一對應關係。預設為停用(無篩選)。 - log.abbrevCommit
-
如果為 true,則會使 git-log[1]、git-show[1] 和 git-whatchanged[1] 採用
--abbrev-commit
。您可以使用--no-abbrev-commit
覆寫此選項。 - log.date
-
設定 log 命令的預設日期時間模式。為 log.date 設定值類似於使用 git log 的
--date
選項。詳細資訊請參閱 git-log[1]。如果格式設定為「auto:foo」且正在使用分頁程式,則日期格式會使用格式「foo」。否則,會使用「default」。
- log.decorate
-
印出 log 命令顯示的任何提交的參考名稱。如果指定 short,則不會印出參考名稱字首 refs/heads/、refs/tags/ 和 refs/remotes/。如果指定 full,則會印出完整參考名稱(包括字首)。如果指定 auto,則如果輸出要傳送到終端機,則參考名稱會顯示為好像給定 short,否則不會顯示參考名稱。這與
git log
的--decorate
選項相同。 - log.initialDecorationSet
-
依預設,
git log
只顯示某些已知參考命名空間的裝飾。如果指定 all,則會顯示所有參考作為裝飾。 - log.excludeDecoration
-
從記錄裝飾中排除指定的模式。這類似於
--decorate-refs-exclude
命令列選項,但可以使用--decorate-refs
選項覆寫設定選項。 - log.diffMerges
-
設定當指定
--diff-merges=on
時要使用的差異格式,詳細資訊請參閱 git-log[1] 中的--diff-merges
。預設值為separate
。 - log.follow
-
如果為
true
,當給定單個 <path> 時,git log
的行為將如同使用了--follow
選項。這與--follow
有相同的限制,即它不能用於追蹤多個檔案,並且在非線性歷史記錄上效果不佳。 - log.graphColors
-
一個以逗號分隔的顏色列表,可用於在
git log --graph
中繪製歷史線條。 - log.showRoot
-
如果為 true,初始提交將顯示為一個大型的建立事件。這相當於對一個空的樹進行差異比較。像 git-log[1] 或 git-whatchanged[1] 這樣的工具通常會隱藏根提交,現在將會顯示它。預設值為 True。
- log.showSignature
-
如果為 true,則使 git-log[1]、git-show[1] 和 git-whatchanged[1] 假設使用了
--show-signature
選項。 - log.mailmap
-
如果為 true,則使 git-log[1]、git-show[1] 和 git-whatchanged[1] 假設使用了
--use-mailmap
選項,否則假設使用了--no-use-mailmap
選項。預設值為 True。 - lsrefs.unborn
-
可以是 "advertise" (預設值)、"allow" 或 "ignore"。如果為 "advertise",伺服器將回應客戶端發送的 "unborn"(如 gitprotocol-v2[5] 中所述),並在協定 v2 功能宣告期間宣告對此功能的支援。"allow" 與 "advertise" 相同,只是伺服器不會宣告對此功能的支援;這對於無法原子更新的負載平衡伺服器(例如)很有用,因為管理員可以設定 "allow",然後在延遲後設定 "advertise"。
- mailinfo.scissors
-
如果為 true,則使 git-mailinfo[1] (因此也包括 git-am[1]) 預設行為如同在命令列上提供了 --scissors 選項。當此功能啟用時,它會從訊息主體中刪除剪刀線(即主要由 ">8"、"8<" 和 "-" 組成)之前的所有內容。
- mailmap.file
-
一個增強的郵件映射檔案的位置。首先載入位於儲存庫根目錄的預設郵件映射檔案,然後載入此變數指向的郵件映射檔案。郵件映射檔案的位置可能在儲存庫的子目錄中,或在儲存庫本身之外的某個位置。請參閱 git-shortlog[1] 和 git-blame[1]。
- mailmap.blob
-
類似於
mailmap.file
,但將該值視為對儲存庫中 blob 的參考。如果同時給定mailmap.file
和mailmap.blob
,則會解析兩者,其中來自mailmap.file
的條目具有優先權。在裸儲存庫中,預設值為HEAD:.mailmap
。在非裸儲存庫中,預設值為空。 - maintenance.auto
-
此布林組態選項控制某些命令在完成正常工作後是否執行
git maintenance run --auto
。預設值為 true。 - maintenance.autoDetach
-
許多 Git 命令在將資料寫入儲存庫後會觸發自動維護。此布林組態選項控制此自動維護應在前台發生,還是維護程序應分離並在背景中繼續運行。
如果未設定,則使用
gc.autoDetach
的值作為後備。如果兩者都未設定,則預設值為 true,表示維護程序將會分離。 - maintenance.strategy
-
此字串組態選項提供了一種方法來指定幾個建議的背景維護排程之一。這僅影響在
git maintenance run --schedule=X
命令期間執行哪些任務,前提是未提供任何--task=<task>
引數。此外,如果設定了maintenance.<task>.schedule
組態值,則會使用該值,而不是maintenance.strategy
提供的值。可能的策略字串為-
none
:此預設設定表示在任何排程都不執行任何任務。 -
incremental
:此設定最佳化以執行不刪除任何資料的小型維護活動。這不會排程gc
任務,而是每小時執行prefetch
和commit-graph
任務,每天執行loose-objects
和incremental-repack
任務,以及每週執行pack-refs
任務。
-
- maintenance.<task>.enabled
-
此布林組態選項控制當未指定
--task
選項給git maintenance run
時,是否執行名稱為<task>
的維護任務。如果存在--task
選項,則會忽略這些組態值。預設情況下,只有maintenance.gc.enabled
為 true。 - maintenance.<task>.schedule
-
此組態選項控制在
git maintenance run --schedule=<frequency>
命令期間是否執行給定的<task>
。該值必須是 "hourly"、"daily" 或 "weekly" 之一。 - maintenance.commit-graph.auto
-
此整數組態選項控制應多久執行一次
commit-graph
任務,作為git maintenance run --auto
的一部分。如果為零,則commit-graph
任務不會使用--auto
選項執行。負值將強制每次都執行該任務。否則,正值表示當不在 commit-graph 檔案中的可到達提交數量至少為maintenance.commit-graph.auto
的值時,應執行該命令。預設值為 100。 - maintenance.loose-objects.auto
-
此整數組態選項控制應多久執行一次
loose-objects
任務,作為git maintenance run --auto
的一部分。如果為零,則loose-objects
任務不會使用--auto
選項執行。負值將強制每次都執行該任務。否則,正值表示當鬆散物件的數量至少為maintenance.loose-objects.auto
的值時,應執行該命令。預設值為 100。 - maintenance.incremental-repack.auto
-
此整數組態選項控制應多久執行一次
incremental-repack
任務,作為git maintenance run --auto
的一部分。如果為零,則incremental-repack
任務不會使用--auto
選項執行。負值將強制每次都執行該任務。否則,正值表示當不在 multi-pack-index 中的 pack 檔案數量至少為maintenance.incremental-repack.auto
的值時,應執行該命令。預設值為 10。 - man.viewer
-
指定可用於以 *man* 格式顯示說明的程式。請參閱 git-help[1]。
- man.<tool>.cmd
-
指定要調用指定 man 檢視器的命令。指定的命令會在 shell 中進行評估,並將 man 頁面作為引數傳遞。(請參閱 git-help[1]。)
- man.<tool>.path
-
覆寫給定工具的路徑,該工具可用於以 *man* 格式顯示說明。請參閱 git-help[1]。
- merge.conflictStyle
-
指定在合併時,將衝突區塊寫入工作樹檔案的樣式。預設值為 "merge",它會顯示一個
<<<<<<<
衝突標記、一方所做的更改、一個=======
標記、另一方所做的更改,然後是一個>>>>>>>
標記。另一種樣式 "diff3" 會在=======
標記之前新增一個|||||||
標記和原始文字。"merge" 樣式往往會產生比 diff3 更小的衝突區域,這既是因為排除了原始文字,也因為當兩側的行子集匹配時,它們會直接從衝突區域中拉出。另一種替代樣式 "zdiff3" 類似於 diff3,但當這些匹配的行出現在衝突區域的開頭或結尾附近時,它會從衝突區域中刪除兩側的匹配行。 - merge.defaultToUpstream
-
如果在沒有任何提交引數的情況下呼叫合併,則透過使用儲存在遠端追蹤分支中的最後觀察到的值,合併為目前分支設定的上游分支。諮詢
branch.<current branch>.merge
的值,這些值會命名由branch.<current branch>.remote
命名的遠端分支,然後透過remote.<remote>.fetch
將它們對應到其相對應的遠端追蹤分支,並合併這些追蹤分支的提示。預設值為 true。 - merge.ff
-
預設情況下,當合併一個是目前提交的後代的提交時,Git 不會建立額外的合併提交。相反地,會快速向前推進目前分支的提示。當設定為
false
時,此變數會告知 Git 在這種情況下建立額外的合併提交(相當於從命令列給出--no-ff
選項)。當設定為only
時,只允許這種快速向前合併(相當於從命令列給出--ff-only
選項)。 - merge.verifySignatures
-
如果為 true,則相當於 --verify-signatures 命令列選項。有關詳細資訊,請參閱 git-merge[1]。
- merge.branchdesc
-
除了分支名稱外,還會用與分支相關聯的分支描述文字來填充記錄訊息。預設值為 false。
- merge.log
-
除了分支名稱外,還會使用最多指定數量的來自實際正在合併的提交的一行描述來填充記錄訊息。預設值為 false,true 是 20 的同義詞。
- merge.suppressDest
-
透過將符合整合分支名稱的 glob 新增至此多值組態變數,為合併到這些整合分支計算的預設合併訊息,將會從其標題中省略 "into <branch name>"。
可以使用具有空值的元素來清除從先前組態條目累積的 glob 列表。當未定義
merge.suppressDest
變數時,為了向後相容,將使用預設值master
。 - merge.renameLimit
-
在合併期間,在重新命名偵測的詳盡部分中要考慮的檔案數量。如果未指定,則預設為 diff.renameLimit 的值。如果未指定 merge.renameLimit 和 diff.renameLimit,則目前預設為 7000。如果關閉了重新命名偵測,則此設定無效。
- merge.renames
-
是否讓 Git 偵測重新命名。若設定為「false」,則停用重新命名偵測。若設定為「true」,則啟用基本重新命名偵測。預設值為 diff.renames 的值。
- merge.directoryRenames
-
是否讓 Git 偵測目錄重新命名,這會影響在合併時,當歷史紀錄的一方將目錄重新命名,而另一方在該目錄中新增檔案時會發生的情況。如果 merge.directoryRenames 設定為「false」,則停用目錄重新命名偵測,表示這些新檔案將會留在舊目錄中。如果設定為「true」,則啟用目錄重新命名偵測,表示這些新檔案將會被移動到新目錄中。如果設定為「conflict」,則會針對這些路徑回報衝突。如果 merge.renames 為 false,則會忽略 merge.directoryRenames 並將其視為 false。預設值為「conflict」。
- merge.renormalize
-
告知 Git 儲存庫中檔案的標準表示法已隨著時間改變 (例如,較早的提交記錄使用 CRLF 行尾符號的文字檔案,但最近的提交記錄使用 LF 行尾符號)。在這樣的儲存庫中,Git 可以在執行合併之前,將提交記錄中的資料轉換為標準格式,以減少不必要的衝突。如需更多資訊,請參閱 gitattributes[5] 中的「合併具有不同簽入/簽出屬性的分支」章節。
- merge.stat
-
是否在合併結束時列印 ORIG_HEAD 和合併結果之間的 diffstat。預設值為 True。
- merge.autoStash
-
設定為 true 時,會在操作開始前自動建立暫存的儲藏項目,並在操作結束後套用。這表示您可以在有髒工作樹的狀態下執行合併。但是,請謹慎使用:成功合併後最終套用儲藏項目可能會導致複雜的衝突。此選項可以被 git-merge[1] 的
--no-autostash
和--autostash
選項覆寫。預設值為 false。 - merge.tool
-
控制 git-mergetool[1] 使用的合併工具。以下清單顯示有效的內建值。任何其他值都會被視為自訂合併工具,並且需要定義對應的 mergetool.<tool>.cmd 變數。
- merge.guitool
-
控制當指定 -g/--gui 旗標時,git-mergetool[1] 使用的合併工具。以下清單顯示有效的內建值。任何其他值都會被視為自訂合併工具,並且需要定義對應的 mergetool.<guitool>.cmd 變數。
-
araxis
-
bc
-
codecompare
-
deltawalker
-
diffmerge
-
diffuse
-
ecmerge
-
emerge
-
examdiff
-
guiffy
-
gvimdiff
-
kdiff3
-
meld
-
nvimdiff
-
opendiff
-
p4merge
-
smerge
-
tkdiff
-
tortoisemerge
-
vimdiff
-
vscode
-
winmerge
-
xxdiff
-
- merge.verbosity
-
控制遞迴合併策略顯示的輸出量。層級 0 除了偵測到衝突時的最終錯誤訊息外,不會輸出任何內容。層級 1 只輸出衝突,層級 2 輸出衝突和檔案變更。層級 5 及以上會輸出偵錯資訊。預設值為層級 2。可以使用
GIT_MERGE_VERBOSITY
環境變數覆寫。 - merge.<driver>.name
-
為自訂的底層合併驅動程式定義人類可讀的名稱。詳細資訊請參閱 gitattributes[5]。
- merge.<driver>.driver
-
定義實作自訂底層合併驅動程式的命令。詳細資訊請參閱 gitattributes[5]。
- merge.<driver>.recursive
-
命名在執行通用祖先之間的內部合併時要使用的底層合併驅動程式。詳細資訊請參閱 gitattributes[5]。
- mergetool.<tool>.path
-
覆寫給定工具的路徑。當您的工具不在 PATH 中時,這會很有用。
- mergetool.<tool>.cmd
-
指定要呼叫指定合併工具的命令。指定的命令會在 shell 中進行評估,並提供以下變數:BASE 是包含要合併檔案的共同基礎的暫存檔案名稱 (如果有的話);LOCAL 是包含目前分支檔案內容的暫存檔案名稱;REMOTE 是包含要合併分支檔案內容的暫存檔案名稱;MERGED 包含合併工具應將成功合併的結果寫入的檔案名稱。
- mergetool.<tool>.hideResolved
-
允許使用者覆寫特定工具的全域
mergetool.hideResolved
值。完整描述請參閱mergetool.hideResolved
。 - 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.meld.useAutoMerge
-
當給定
--auto-merge
時,meld 會自動合併所有非衝突的部分,反白顯示衝突的部分,並等待使用者決定。將mergetool.meld.useAutoMerge
設定為true
會告知 Git 無條件地將--auto-merge
選項與meld
搭配使用。將此值設定為auto
會使 git 偵測是否支援--auto-merge
,並且只在可用的情況下使用--auto-merge
。值為false
會完全避免使用--auto-merge
,且為預設值。 - mergetool.<vimdiff variant>.layout
-
設定 vimdiff 的
<variant>
的分割視窗版面配置,其中<variant>
可以是vimdiff
、nvimdiff
、gvimdiff
的任何一個。使用--tool=<variant>
啟動git mergetool
時 (如果merge.tool
設定為<variant>
,則不使用--tool
),Git 會查詢mergetool.<variant>.layout
以判斷工具的版面配置。如果沒有特定變體的設定,則會使用vimdiff
的設定作為後備。如果也沒有,則會使用具有 4 個視窗的預設版面配置。若要設定版面配置,請參閱 git-mergetool[1] 中的BACKEND SPECIFIC HINTS
章節。 - mergetool.hideResolved
-
在合併期間,Git 會自動解析盡可能多的衝突,並在無法解析的任何衝突周圍寫入包含衝突標記的 MERGED 檔案;LOCAL 和 REMOTE 通常代表來自 Git 衝突解析之前的文件版本。這個旗標會導致 LOCAL 和 REMOTE 被覆寫,以便只有未解決的衝突才會呈現給合併工具。可以使用
mergetool.<tool>.hideResolved
設定變數,針對每個工具進行設定。預設值為false
。 - mergetool.keepBackup
-
執行合併後,可以將包含衝突標記的原始檔案儲存為具有
.orig
副檔名的檔案。如果將此變數設定為false
,則不會保留此檔案。預設值為true
(即保留備份檔案)。 - mergetool.keepTemporaries
-
在呼叫自訂合併工具時,Git 會使用一組暫存檔案傳遞給該工具。如果工具傳回錯誤,且此變數設定為
true
,則會保留這些暫存檔案;否則,它們會在工具結束後移除。預設值為false
。 - mergetool.writeToTemp
-
Git 預設會將衝突檔案的暫存 BASE、LOCAL 和 REMOTE 版本寫入工作樹。如果設定為
true
,Git 會嘗試對這些檔案使用暫存目錄。預設值為false
。 - mergetool.prompt
-
在每次呼叫合併解析程式之前提示。
- mergetool.guiDefault
-
設定為
true
以預設使用merge.guitool
(相當於指定--gui
引數),或設定為auto
以根據是否存在DISPLAY
環境變數值來選取merge.guitool
或merge.tool
。預設值為false
,其中必須明確提供--gui
引數,才能使用merge.guitool
。 - notes.mergeStrategy
-
解析 notes 衝突時預設選擇的合併策略。必須是
manual
、ours
、theirs
、union
或cat_sort_uniq
其中之一。預設值為manual
。如需每個策略的詳細資訊,請參閱 git-notes[1] 的「NOTES MERGE STRATEGIES」章節。可以使用將
--strategy
選項傳遞給 git-notes[1] 來覆寫此設定。 - notes.<name>.mergeStrategy
-
在將 notes 合併到 refs/notes/<name> 時選擇的合併策略。這會覆寫更通用的 "notes.mergeStrategy"。如需可用策略的詳細資訊,請參閱 git-notes[1] 中的「NOTES MERGE STRATEGIES」章節。
- notes.displayRef
-
除了
core.notesRef
或GIT_NOTES_REF
設定的預設值之外,在顯示具有 git log 系列命令的提交訊息時,還要從哪個 ref (或 ref,如果是 glob 或多次指定) 讀取 notes。此設定可以使用
GIT_NOTES_DISPLAY_REF
環境變數覆寫,該變數必須是以冒號分隔的 ref 或 glob 清單。對於不存在的 ref,會發出警告,但會無聲地忽略不符合任何 ref 的 glob。
此設定可以使用 git log 系列命令的
--no-notes
選項停用,或者使用這些命令接受的--notes=<ref>
選項停用。"core.notesRef" 的有效值 (可能會被 GIT_NOTES_REF 覆寫) 也會隱式新增到要顯示的 ref 清單中。
- notes.rewrite.<command>
-
當使用 <command> (目前為
amend
或rebase
) 重寫提交時,如果此變數為false
,git 將不會把筆記從原始提交複製到重寫後的提交。預設值為true
。另請參閱下方的「notes.rewriteRef
」。此設定可使用
GIT_NOTES_REWRITE_REF
環境變數覆寫,該變數必須是以冒號分隔的 refs 或 glob 列表。 - notes.rewriteMode
-
在重寫期間複製筆記時(請參閱「notes.rewrite.<command>」選項),決定如果目標提交已有名為的筆記時該怎麼做。必須是
overwrite
、concatenate
、cat_sort_uniq
或ignore
其中之一。預設值為concatenate
。此設定可使用
GIT_NOTES_REWRITE_MODE
環境變數覆寫。 - notes.rewriteRef
-
在重寫期間複製筆記時,指定應複製其筆記的(完整合格)ref。可以是 glob,在這種情況下,將複製所有符合 ref 的筆記。您也可以多次指定此設定。
沒有預設值;您必須設定此變數才能啟用筆記重寫。將其設定為
refs/notes/commits
可啟用預設提交筆記的重寫。可以使用
GIT_NOTES_REWRITE_REF
環境變數覆寫。有關其格式的進一步說明,請參閱上方的notes.rewrite.<command>
。 - pack.window
-
當命令行上未給定視窗大小時,git-pack-objects[1] 使用的視窗大小。預設值為 10。
- pack.depth
-
當命令行上未給定最大深度時,git-pack-objects[1] 使用的最大 delta 深度。預設值為 50。最大值為 4095。
- pack.windowMemory
-
當命令行上未給定限制時,git-pack-objects[1] 中每個執行緒用於 pack 視窗記憶體所消耗的最大記憶體大小。值可以加上後綴「k」、「m」或「g」。當未設定(或明確設定為 0)時,將沒有限制。
- pack.compression
-
一個整數 -1..9,表示 pack 檔案中物件的壓縮級別。-1 為 zlib 預設值。0 表示不壓縮,而 1..9 是各種速度/大小權衡,9 為最慢。如果未設定,則預設為 core.compression。如果 core.compression 也未設定,則預設為 -1,即 zlib 預設值,這是「速度和壓縮之間的預設折衷(目前相當於級別 6)。」
請注意,更改壓縮級別不會自動重新壓縮所有現有物件。您可以將 -F 選項傳遞給 git-repack[1] 來強制重新壓縮。
- pack.allowPackReuse
-
當為 true 或 "single" 且啟用可達性位圖時,pack-objects 將嘗試逐字發送位圖 packfile 的部分。當為 "multi" 且有多重 pack 可達性位圖可用時,pack-objects 將嘗試發送 MIDX 中所有 pack 的部分。
如果只有單一 pack 位圖可用,且
pack.allowPackReuse
設定為 "multi",則只重複使用位圖 packfile 的部分。這可以減少記憶體和 CPU 使用量來提供提取,但可能會導致發送稍微更大的 pack。預設值為 true。 - pack.island
-
一個擴充的正規表示式,用於設定一組 delta 島。有關詳細資訊,請參閱 git-pack-objects[1] 中的「DELTA ISLANDS」。
- pack.islandCore
-
指定一個島嶼名稱,該島嶼的物件會被優先打包。這會在一個 pack 的前面建立一種虛擬 pack,以便指定島嶼的物件希望可以更快地複製到應提供給請求這些物件的使用者的任何 pack 中。實際上,這表示指定的島嶼應對應於儲存庫中最常複製的內容。另請參閱 git-pack-objects[1] 中的「DELTA ISLANDS」。
- pack.deltaCacheSize
-
在將 delta 寫入 pack 之前,git-pack-objects[1] 中用於快取 delta 的最大記憶體量(以位元組為單位)。此快取用於加速寫入物件階段,方法是不必在找到所有物件的最佳匹配後重新計算最終的 delta 結果。在記憶體不足的機器上重新打包大型儲存庫可能會受到嚴重影響,尤其是在此快取將系統推入交換的情況下。值 0 表示沒有限制。可以使用 1 個位元組的最小大小來實際上停用此快取。預設值為 256 MiB。
- pack.deltaCacheLimit
-
在 git-pack-objects[1] 中快取的 delta 最大大小。此快取用於加速寫入物件階段,方法是不必在找到所有物件的最佳匹配後重新計算最終的 delta 結果。預設值為 1000。最大值為 65535。
- pack.threads
-
指定在搜尋最佳 delta 匹配時要產生的執行緒數。這需要使用 pthreads 編譯 git-pack-objects[1],否則此選項將被忽略並發出警告。這旨在減少多處理器機器上的打包時間。但是,delta 搜尋視窗所需的記憶體量會乘以執行緒數。指定 0 將導致 Git 自動偵測 CPU 數量並相應地設定執行緒數。
- pack.indexVersion
-
指定預設 pack 索引版本。有效值為 1,表示 Git 1.5.2 之前的版本使用的舊版 pack 索引;以及 2,表示新的 pack 索引,具有大於 4 GB 的 pack 的功能以及針對損壞 pack 的重新打包的適當保護。版本 2 是預設值。請注意,當對應的 pack 大於 2 GB 時,將強制執行版本 2,並忽略此組態選項。
如果您的舊版 Git 不了解版本 2
*.idx
檔案,則透過非原生協定(例如「http」)複製或提取將從另一側複製*.pack
檔案和對應的*.idx
檔案,可能會導致您的較舊版本的 Git 無法存取儲存庫。但是,如果*.pack
檔案小於 2 GB,您可以使用*.pack
檔案上的 git-index-pack[1] 來重新產生*.idx
檔案。 - pack.packSizeLimit
-
pack 的最大大小。此設定僅影響重新打包時寫入檔案的打包,也就是說,git:// 協定不受影響。它可以被 git-repack[1] 的
--max-pack-size
選項覆寫。達到此限制會導致建立多個 packfile。請注意,此選項很少有用,並且可能會導致更大的總磁碟大小(因為 Git 不會儲存 pack 之間的 delta)和更差的執行效能(在多個 pack 中尋找物件的速度比單一 pack 慢,而且可達性位圖等最佳化無法處理多個 pack)。
如果您需要使用較小的 packfile 主動執行 Git(例如,因為您的檔案系統不支援大型檔案),此選項可能會有所幫助。但是,如果您的目標是透過支援有限大小的媒體(例如,無法儲存整個儲存庫的可移除媒體)傳輸 packfile,您可能最好建立一個大型 packfile,並使用通用的多卷封存工具(例如,Unix
split
)分割它。允許的最小大小限制為 1 MiB。預設值為無限制。支援常用的單位後綴 k、m 或 g。
- pack.useBitmaps
-
如果為 true,git 會在打包到 stdout 時(例如,在提取的伺服器端期間)使用 pack 位圖(如果可用)。預設值為 true。您通常不需要關閉此設定,除非您正在偵錯 pack 位圖。
- pack.useBitmapBoundaryTraversal
-
如果為 true,Git 將使用實驗性演算法來計算帶有位圖的可達性查詢。與其為所有否定提示建立完整的位圖,然後將它們 OR 在一起,不如考慮將帶有現有位圖的否定提示視為可加成的(即,如果它們存在,則將它們 OR 到結果中,否則忽略它們),並在邊界處建立位圖。
使用此演算法時,由於沒有開啟屬於某些「不感興趣」提交的樹,Git 可能會包含過多的物件。這種不精確性與非位圖遍歷演算法相符。
在許多情況下,這可以提供比精確演算法更快的速度,尤其是在查詢的否定端位圖覆蓋率不佳時。
- pack.useSparse
-
如果為 true,當存在 --revs 選項時,git 預設會在使用 git pack-objects 時使用 --sparse 選項。此演算法僅遍歷出現在引入新物件的路徑中的樹。當計算要發送小變更的 pack 時,這可以顯著提高效能。但是,如果包含的提交包含某些類型的直接重新命名,則可能會將額外的物件新增到 packfile。預設值為
true
。 - pack.preferBitmapTips
-
在選擇哪些提交將接收位圖時,優先選擇此設定的任何值後綴的任何參考提示上的提交,而不是「選擇視窗」中的任何其他提交。
請注意,將此設定設定為
refs/foo
並不表示refs/foo/bar
和refs/foo/baz
提示上的提交一定會被選中。這是因為提交是從一系列可變長度的視窗中選擇位圖的。如果在視窗中看到此設定的任何值後綴的任何參考提示上的提交,則會立即優先於該視窗中的任何其他提交。
- pack.writeBitmaps (已棄用)
-
這是
repack.writeBitmaps
的已棄用同義詞。 - pack.writeBitmapHashCache
-
如果為 true,git 將在位圖索引中包含「雜湊快取」區段(如果已寫入)。此快取可用於提供 Git 的 delta 啟發式演算法,可能會導致在位圖和非位圖物件之間產生更好的 delta(例如,在舊的位圖 pack 和自上次 gc 以來推送的物件之間提供提取)。缺點是它會消耗每個物件 4 個位元組的磁碟空間。預設值為 true。
當寫入多個 pack 的可達性位元圖時,不會計算新的名稱雜湊值;而是將現有位元圖中儲存的任何名稱雜湊值,在寫入新的位元圖時,置換到它們適當的位置。
- pack.writeBitmapLookupTable
-
如果為 true,Git 會在位元圖索引中包含「查閱表」區段 (如果有的話)。此表用於儘可能延後載入個別的位元圖。這對於具有相對較大位元圖索引的儲存庫可能很有益處。預設為 false。
- pack.readReverseIndex
-
如果為 true,git 會讀取任何可用的 .rev 檔案 (請參閱:gitformat-pack[5])。如果為 false,則會從頭開始產生反向索引,並儲存在記憶體中。預設為 true。
- pack.writeReverseIndex
-
如果為 true,git 會為它寫入的每個新 packfile 寫入對應的 .rev 檔案 (請參閱:gitformat-pack[5]),但在 git-fast-import[1] 和批量簽入機制中除外。預設為 true。
- pager.<cmd>
-
如果值為布林值,則當寫入 tty 時,會開啟或關閉特定 Git 子命令輸出的分頁功能。否則,會使用
pager.<cmd>
的值指定的 pager,開啟該子命令的分頁功能。如果在命令列中指定--paginate
或--no-pager
,則會優先於此選項。若要停用所有命令的分頁功能,請將core.pager
或GIT_PAGER
設定為cat
。 - pretty.<name>
-
如 git-log[1] 中所指定的,
--pretty=
格式字串的別名。此處定義的任何別名都可以像內建的 pretty 格式一樣使用。例如,執行git config pretty.changelog "format:* %H %s"
會導致呼叫git log --pretty=changelog
等同於執行git log "--pretty=format:* %H %s"
。請注意,與內建格式同名的別名將被靜默忽略。 - promisor.quiet
-
如果設定為 "true",則在為部分複製提取其他物件時,假設使用
--quiet
。 - protocol.allow
-
如果設定,則為所有沒有明確策略 (
protocol.<name>.allow
) 的協定提供使用者定義的預設策略。預設情況下,如果未設定,已知安全的協定 (http、https、git、ssh) 的預設策略為always
,已知危險的協定 (ext) 的預設策略為never
,而所有其他協定 (包括 file) 的預設策略為user
。支援的策略-
always
- 協定永遠可以使用。 -
never
- 協定永遠無法使用。 -
user
- 只有在GIT_PROTOCOL_FROM_USER
未設定或值為 1 時,協定才能使用。當您希望使用者直接使用某個協定,但不想讓沒有使用者輸入就執行 clone/fetch/push 命令的命令使用該協定時,應使用此策略,例如遞迴子模組初始化。
-
- protocol.<name>.allow
-
設定要讓協定
<name>
與 clone/fetch/push 命令一起使用的策略。如需可用的策略,請參閱上方的protocol.allow
。git 目前使用的協定名稱為
-
file
:任何基於本機檔案的路徑 (包括file://
URL 或本機路徑) -
git
:透過直接 TCP 連線 (或設定的 Proxy) 的匿名 git 協定 -
ssh
:透過 ssh 的 git (包括host:path
語法、ssh://
等) -
http
:透過 http 的 git,包括「智慧型 http」和「愚蠢型 http」。請注意,這不包括https
;如果您想要同時設定兩者,則必須個別設定。 -
任何外部輔助程式都以其協定命名 (例如,使用
hg
來允許git-remote-hg
輔助程式)
-
- protocol.version
-
如果設定,用戶端會嘗試使用指定的協定版本與伺服器通訊。如果伺服器不支援該版本,則通訊會回到版本 0。如果未設定,則預設值為
2
。支援的版本-
0
- 原始的線路協定。 -
1
- 原始線路協定,並在伺服器的初始回應中新增了版本字串。 -
2
- 線路協定版本 2,請參閱 gitprotocol-v2[5]。
-
- pull.ff
-
預設情況下,當合併一個為目前 commit 的後代的 commit 時,Git 不會建立額外的合併 commit。而是會快速轉送目前分支的尖端。如果設定為
false
,則此變數會告知 Git 在這種情況下建立額外的合併 commit (相當於從命令列提供--no-ff
選項)。如果設定為only
,則只允許這種快速轉送合併 (相當於從命令列提供--ff-only
選項)。此設定會在提取時覆寫merge.ff
。 - pull.rebase
-
如果為 true,則會將分支變基到提取的分支之上,而不是在執行「git pull」時,合併預設遠端的預設分支。如需在每個分支的基礎上設定此選項,請參閱 "branch.<name>.rebase"。
當
merges
(或僅 m) 時,傳遞--rebase-merges
選項給 git rebase,以便將本地合併提交包含在變基中(詳情請參閱 git-rebase[1])。當值為
interactive
(或僅 i) 時,變基會在互動模式下執行。注意:這可能是一個危險的操作;除非您了解其含義,否則請勿使用(詳情請參閱 git-rebase[1])。
- pull.octopus
-
一次提取多個分支時要使用的預設合併策略。
- pull.twohead
-
提取單一分支時要使用的預設合併策略。
- push.autoSetupRemote
-
如果設定為 "true",則當目前分支沒有上游追蹤時,假設預設推送使用
--set-upstream
;此選項會與 push.default 選項 *simple*、*upstream* 和 *current* 一起生效。如果您預設想要將新分支推送至預設遠端 (就像 *push.default=current* 的行為一樣),並且您也想要設定上游追蹤,則此選項很有用。最有可能從此選項受益的工作流程是 *simple* 中央工作流程,其中所有分支預期在遠端上都具有相同的名稱。 - push.default
-
定義如果沒有提供 refspec (無論是來自命令列、組態或其他地方),
git push
應採取的動作。不同的值非常適合特定的工作流程;例如,在純粹的中央工作流程中 (也就是提取來源等於推送目的地),upstream
可能就是您想要的。可能的值為-
nothing
- 除非提供 refspec,否則不推送任何內容 (錯誤退出)。這主要是為了讓使用者透過永遠明確來避免錯誤。 -
current
- 推送目前分支以更新接收端上具有相同名稱的分支。適用於中央和非中央工作流程。 -
upstream
- 將目前分支推送回其變更通常整合到目前分支中的分支 (稱為@{upstream}
)。如果您是推送至您通常從中提取的相同儲存庫 (也就是中央工作流程),則此模式才適用。 -
tracking
- 這是upstream
的已淘汰同義字。 -
simple
- 推送具有遠端上相同名稱的目前分支。如果您是在集中式工作流程上工作 (推送至您從中提取的相同儲存庫,通常是
origin
),則您需要使用相同名稱設定上游分支。自 Git 2.0 起,此模式是預設值,並且是最適合初學者的安全選項。
-
matching
- 推送兩端都具有相同名稱的所有分支。這會讓您推送到的儲存庫記住將要推送的分支集合 (例如,如果您總是推送 *maint* 和 *master* 到那裡,並且沒有其他分支,則您推送到的儲存庫將擁有這兩個分支,而您的本機 *maint* 和 *master* 將被推送到那裡)。若要有效地使用此模式,您必須確定在執行 *git push* 之前,您要推送的*所有*分支都已準備好推送,因為此模式的重點是要讓您一次推送所有分支。如果您通常只完成一個分支的工作並推送結果,而其他分支尚未完成,則此模式不適合您。而且,此模式不適合推送至共用的中央儲存庫,因為其他人可能會在那裡新增新分支,或在您控制之外更新現有分支的尖端。
這以前是預設值,但自 Git 2.0 (
simple
是新的預設值) 起,已不是預設值。
-
- push.followTags
-
如果設定為 true,則預設啟用
--follow-tags
選項。您可以在推送時指定--no-follow-tags
來覆寫此組態。 - push.gpgSign
-
可以設定為布林值,或字串 *if-asked*。true 值會導致所有推送都使用 GPG 簽署,就像將
--signed
傳遞至 git-push[1] 一樣。字串 *if-asked* 會導致在伺服器支援的情況下,推送使用 GPG 簽署,就像將--signed=if-asked
傳遞至 *git push* 一樣。false 值可能會覆寫較低優先順序的組態檔案中的值。明確的命令列旗標永遠會覆寫此組態選項。 - push.pushOption
-
當未從命令列提供
--push-option=<option>
引數時,git push
的行為就像此變數的每個 <value> 都以--push-option=<value>
提供一樣。這是一個多值變數,並且可以在較高優先順序的組態檔案 (例如,儲存庫中的
.git/config
) 中使用空值,以清除從較低優先順序的組態檔案 (例如$HOME/.gitconfig
) 繼承的值。Example: /etc/gitconfig push.pushoption = a push.pushoption = b ~/.gitconfig push.pushoption = c repo/.git/config push.pushoption = push.pushoption = b This will result in only b (a and c are cleared).
- push.recurseSubmodules
-
可以是 "check"、"on-demand"、"only" 或 "no",其行為與 "push --recurse-submodules" 相同。如果未設定,則預設使用 *no*,除非設定 *submodule.recurse* (在這種情況下,*true* 值表示 *on-demand*)。
- push.useForceIfIncludes
-
若設定為 "true",則等同於在命令列中指定 git-push[1] 時使用
--force-if-includes
選項。在推送時加入--no-force-if-includes
則會覆蓋此組態設定。 - push.negotiate
-
若設定為 "true",則嘗試透過多輪協商來減少傳送的 packfile 大小,在協商過程中,客戶端與伺服器嘗試找出共同的 commit。若為 "false",則 Git 將僅依賴伺服器的 ref 宣告來找出共同的 commit。
- push.useBitmaps
-
若設定為 "false",即使
pack.useBitmaps
為 "true",也會停用 "git push" 的 bitmaps 使用,但不會阻止其他 git 操作使用 bitmaps。預設值為 true。 - rebase.backend
-
用於變基的預設後端。可選的選項為 apply 或 merge。未來,如果 merge 後端獲得 apply 後端的所有剩餘功能,此設定可能會變得不再使用。
- rebase.stat
-
是否顯示自上次變基以來上游變更的 diffstat。預設為 False。
- rebase.autoSquash
-
若設定為 true,預設為互動模式啟用 git-rebase[1] 的
--autosquash
選項。此選項可以使用--no-autosquash
選項覆蓋。 - rebase.autoStash
-
若設定為 true,則在操作開始前自動建立一個臨時的 stash 條目,並在操作結束後套用它。這表示您可以在 dirty 的工作目錄上執行變基。然而,請謹慎使用:在成功的變基後,最終的 stash 套用可能會導致不小的衝突。此選項可以被 git-rebase[1] 的
--no-autostash
和--autostash
選項覆蓋。預設值為 false。 - rebase.updateRefs
-
若設定為 true,則預設啟用
--update-refs
選項。 - rebase.missingCommitsCheck
-
若設定為 "warn",如果某些 commit 被移除(例如,刪除了一行),則 git rebase -i 將印出警告,但變基仍會繼續進行。若設定為 "error",則會印出先前的警告並停止變基,接著可以使用 git rebase --edit-todo 來修正錯誤。若設定為 "ignore",則不會進行任何檢查。若要在沒有警告或錯誤的情況下捨棄 commit,請在 todo 清單中使用
drop
命令。預設值為 "ignore"。 - rebase.instructionFormat
-
一個格式字串,如 git-log[1] 中所指定的,用於互動式變基期間的 todo 清單。格式會自動將 commit hash 前置到格式中。
- rebase.abbreviateCommands
-
若設定為 true,
git rebase
將在 todo 清單中使用縮寫的命令名稱,產生類似這樣的結果: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
選項相同。 - rebase.forkPoint
-
若設定為 false,則預設設定
--no-fork-point
選項。 - rebase.rebaseMerges
-
是否以及如何預設設定
--rebase-merges
選項。可以是rebase-cousins
、no-rebase-cousins
或布林值。設定為 true 或no-rebase-cousins
等同於--rebase-merges=no-rebase-cousins
,設定為rebase-cousins
等同於--rebase-merges=rebase-cousins
,而設定為 false 則等同於--no-rebase-merges
。在命令列上傳遞--rebase-merges
,無論有無參數,都會覆蓋任何rebase.rebaseMerges
設定。 - rebase.maxLabelLength
-
從 commit 主旨產生標籤名稱時,將名稱截斷至此長度。預設情況下,名稱會截斷為略小於
NAME_MAX
(允許寫入對應鬆散 ref 的.lock
檔案)。 - receive.advertiseAtomic
-
預設情況下,git-receive-pack 會向其客戶端宣告 atomic push 功能。如果您不想宣告此功能,請將此變數設定為 false。
- receive.advertisePushOptions
-
若設定為 true,git-receive-pack 會向其客戶端宣告 push options 功能。預設值為 False。
- receive.autogc
-
預設情況下,git-receive-pack 會在接收到 git-push 的資料並更新 ref 後執行 "git maintenance run --auto"。您可以將此變數設定為 false 來停止它。
- receive.certNonceSeed
-
透過將此變數設定為字串,
git receive-pack
將接受git push --signed
並透過使用 HMAC 保護的 "nonce" 進行驗證,並將此字串作為金鑰。 - receive.certNonceSlop
-
當
git push --signed
傳送的 push 憑證中的 "nonce" 是在數秒內由服務同一個儲存庫的 receive-pack 發出時,將憑證中的 "nonce" 匯出到 hooks 的GIT_PUSH_CERT_NONCE
中 (而不是 receive-pack 要求傳送端包含的內容)。這可能可以讓在pre-receive
和post-receive
中編寫檢查更容易一些。他們只需要檢查GIT_PUSH_CERT_NONCE_STATUS
是否為OK
,而無需檢查記錄 nonce 過時秒數的GIT_PUSH_CERT_NONCE_SLOP
環境變數來決定是否要接受憑證。 - receive.fsckObjects
-
如果設定為 true,git-receive-pack 將檢查所有接收到的物件。請參閱
transfer.fsckObjects
以了解檢查的內容。預設值為 false。如果未設定,則改用transfer.fsckObjects
的值。 - receive.fsck.<msg-id>
-
作用類似
fsck.<msg-id>
,但由 git-receive-pack[1] 而非 git-fsck[1] 使用。有關詳細資訊,請參閱fsck.<msg-id>
文件。 - receive.fsck.skipList
-
作用類似
fsck.skipList
,但由 git-receive-pack[1] 而非 git-fsck[1] 使用。有關詳細資訊,請參閱fsck.skipList
文件。 - receive.keepAlive
-
從客戶端接收 pack 後,
receive-pack
在處理 pack 時可能不會產生任何輸出(如果指定了--quiet
)。這會導致某些網路斷開 TCP 連線。設定此選項後,如果receive-pack
在此階段的receive.keepAlive
秒內沒有傳輸任何資料,它將傳送一個短的 keepalive 封包。預設值為 5 秒;設定為 0 可完全停用 keepalive。 - receive.unpackLimit
-
如果 push 中接收到的物件數量低於此限制,則物件將解壓縮為鬆散的物件檔案。但是,如果接收到的物件數量等於或超過此限制,則接收到的 pack 將在添加任何缺少的增量基礎後儲存為 pack。從 push 儲存 pack 可以使 push 操作更快完成,尤其是在慢速檔案系統上。如果未設定,則改用
transfer.unpackLimit
的值。 - receive.maxInputSize
-
如果傳入的 pack 資料流的大小大於此限制,則 git-receive-pack 將會產生錯誤,而不是接受 pack 檔案。如果未設定或設定為 0,則大小不受限制。
- receive.denyDeletes
-
若設定為 true,git-receive-pack 將拒絕刪除 ref 的 ref 更新。使用此設定來防止透過 push 刪除 ref。
- receive.denyDeleteCurrent
-
若設定為 true,git-receive-pack 將拒絕刪除非裸儲存庫的目前已結帳分支的 ref 更新。
- receive.denyCurrentBranch
-
若設定為 true 或 "refuse",git-receive-pack 將拒絕更新非裸儲存庫的目前已結帳分支的 ref。這種 push 可能很危險,因為它會使 HEAD 與索引和工作目錄不同步。若設定為 "warn",則在這種 push 到 stderr 時列印警告,但允許 push 繼續。若設定為 false 或 "ignore",則允許這種 push,且不顯示訊息。預設值為 "refuse"。
另一個選項是 "updateInstead",如果在目前的 branch 中 push,則將更新工作目錄。此選項旨在同步工作目錄,當其中一端無法透過互動式 ssh 輕鬆存取時(例如,一個 live 網站,因此要求工作目錄必須乾淨)。當在 VM 內開發以在不同的作業系統上測試和修復程式碼時,此模式也很方便。
預設情況下,如果工作目錄或索引與 HEAD 有任何差異,則 "updateInstead" 將拒絕 push,但是可以使用
push-to-checkout
hook 自訂此設定。請參閱 githooks[5]。 - receive.denyNonFastForwards
-
若設定為 true,git-receive-pack 將拒絕非快速轉發的 ref 更新。使用此設定來防止透過 push 進行此類更新,即使強制 push 也是如此。初始化共用儲存庫時會設定此組態變數。
- receive.hideRefs
-
此變數與
transfer.hideRefs
相同,但僅適用於receive-pack
(因此會影響 push,但不影響 fetch)。嘗試透過git push
更新或刪除隱藏的 ref 會被拒絕。 - receive.procReceiveRefs
-
這是一個多值變數,定義 ref 前綴來匹配
receive-pack
中的命令。與前綴匹配的命令將由外部 hook "proc-receive" 執行,而不是內部的execute_commands
函數。如果未定義此變數,則永遠不會使用 "proc-receive" hook,並且所有命令都將由內部的execute_commands
函數執行。舉例來說,如果此變數設定為 "refs/for",推送到像是 "refs/for/master" 的參考將不會建立或更新名為 "refs/for/master" 的參考,但可能會直接透過執行 "proc-receive" hook 來建立或更新 pull request。
可以在值的開頭提供可選的修飾詞,以篩選特定動作的命令:建立 (a)、修改 (m)、刪除 (d)。修飾詞中可以包含一個
!
來否定參考前綴條目。例如:git config --system --add receive.procReceiveRefs ad:refs/heads git config --system --add receive.procReceiveRefs !:refs/heads
- receive.updateServerInfo
-
如果設定為 true,git-receive-pack 會在從 git-push 接收資料並更新參考後執行 git-update-server-info。
- receive.shallowUpdate
-
如果設定為 true,當新的參考需要新的淺層根時,可以更新 .git/shallow。否則,這些參考將會被拒絕。
- reftable.blockSize
-
reftable 後端在寫入區塊時所使用的位元組大小。區塊大小由寫入器決定,不一定要是 2 的冪次方。區塊大小必須大於儲存庫中使用的最長參考名稱或日誌條目,因為參考不能跨越區塊。
建議使用虛擬記憶體系統或檔案系統友善的 2 的冪次方(例如 4kB 或 8kB)。較大的大小 (64kB) 可以產生更好的壓縮效果,但讀取器在存取時可能會增加成本。
最大區塊大小為
16777215
位元組 (15.99 MiB)。預設值為4096
位元組 (4kB)。值為0
將使用預設值。 - reftable.restartInterval
-
建立重新啟動點的間隔。reftable 後端會在檔案建立時決定重新啟動點。對於較小的區塊大小 (4k 或 8k) 而言,每 16 個可能更適合,而對於較大的區塊大小 (64k) 而言,每 64 個可能更適合。
更頻繁的重新啟動點會降低前綴壓縮並增加重新啟動表格所消耗的空間,這兩者都會增加檔案大小。
較不頻繁的重新啟動點會使前綴壓縮更有效,從而減少整體檔案大小,但讀取器在二元搜尋步驟後走訪更多記錄時會增加懲罰。
每個區塊最多支援
65535
個重新啟動點。預設值為每 16 筆記錄建立一個重新啟動點。值為
0
將使用預設值。 - reftable.indexObjects
-
reftable 後端是否應寫入物件區塊。物件區塊是物件 ID 指向它們的參考的反向映射。
預設值為
true
。 - reftable.geometricFactor
-
每當 reftable 後端將新表格附加到堆疊時,它會執行自動壓縮,以確保只有少數表格。後端透過確保表格在每個表格各自的大小方面形成幾何序列來實現這一點。
依預設,幾何序列使用 2 的因數,這表示對於任何表格,下一個最大的表格至少必須大兩倍。支援的最大因數為 256。
- reftable.lockTimeout
-
每當 reftable 後端將新表格附加到堆疊時,它必須在更新之前鎖定中央 "tables.list" 檔案。此配置控制程序在另一個程序已取得鎖定的情況下,會等待多久來取得鎖定。值 0 表示完全不重試;-1 表示無限期嘗試。預設值為 100(即,重試 100 毫秒)。
- remote.pushDefault
-
預設推送到的遠端。覆寫所有分支的
branch.<name>.remote
,並由特定分支的branch.<name>.pushRemote
覆寫。 - remote.<name>.url
-
遠端儲存庫的 URL。請參閱 git-fetch[1] 或 git-push[1]。一個配置的遠端可以有多個 URL;在這種情況下,第一個用於提取,所有 URL 用於推送(假設沒有定義
remote.<name>.pushurl
)。將此鍵設定為空字串會清除 URL 清單,讓您可以覆寫先前的配置。 - remote.<name>.pushurl
-
遠端儲存庫的推送 URL。請參閱 git-push[1]。如果配置的遠端存在
pushurl
選項,則會使用它來推送,而不是使用remote.<name>.url
。一個配置的遠端可以有多個推送 URL;在這種情況下,推送會發送到所有 URL。將此鍵設定為空字串會清除 URL 清單,讓您可以覆寫先前的配置。 - remote.<name>.proxy
-
對於需要 curl (http、https 和 ftp) 的遠端,該遠端使用的 Proxy URL。設定為空字串可停用該遠端的 Proxy。
- remote.<name>.proxyAuthMethod
-
對於需要 curl (http、https 和 ftp) 的遠端,用於針對正在使用的 Proxy 進行驗證的方法(可能設定在
remote.<name>.proxy
中)。請參閱http.proxyAuthMethod
。 - remote.<name>.fetch
-
git-fetch[1] 的預設 "refspec" 集合。請參閱 git-fetch[1]。
- remote.<name>.push
-
git-push[1] 的預設 "refspec" 集合。請參閱 git-push[1]。
- remote.<name>.mirror
-
如果為 true,則推送到此遠端將自動表現得好像在命令列中給定了
--mirror
選項。 - remote.<name>.skipDefaultUpdate
-
已淘汰的
remote.<name>.skipFetchAll
同義詞(如果兩者在組態檔中設定了不同的值,則會使用最後一次出現的值)。 - remote.<name>.skipFetchAll
-
如果為 true,則在使用 git-fetch[1]、git-remote[1] 的
update
子命令進行更新時,將會略過此遠端,並且git maintenance
的預先擷取工作將會忽略此遠端。 - remote.<name>.receivepack
-
推送時在遠端執行的預設程式。請參閱 git-push[1] 的 --receive-pack 選項。
- remote.<name>.uploadpack
-
提取時在遠端執行的預設程式。請參閱 git-fetch-pack[1] 的 --upload-pack 選項。
- remote.<name>.tagOpt
-
將此值設定為 --no-tags 可在從遠端 <name> 提取時停用自動標籤追蹤。將其設定為 --tags 將會從遠端 <name> 提取每個標籤,即使這些標籤無法從遠端分支頭存取。直接將這些旗標傳遞給 git-fetch[1] 可以覆寫此設定。請參閱 git-fetch[1] 的 --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
設定(如果有的話)。另請參閱
remote.<name>.prune
和 git-fetch[1] 的修剪章節。 - remote.<name>.promisor
-
如果設定為 true,則會使用此遠端來提取承諾物件。
- remote.<name>.partialclonefilter
-
從此承諾遠端提取時將套用的篩選器。變更或清除此值只會影響新提交的提取。若要提取本機物件資料庫中已存在的提交的相關物件,請使用 git-fetch[1] 的
--refetch
選項。 - remotes.<group>
-
由 "git remote update <group>" 提取的遠端清單。請參閱 git-remote[1]。
- repack.useDeltaBaseOffset
-
依預設,git-repack[1] 會建立使用 delta-base 位移的套件。如果您需要與早於 1.4.4 版本的 Git 直接或透過 http 等虛擬協定共用您的儲存庫,則需要將此選項設定為 "false" 並重新封裝。舊版 Git 透過原生協定進行的存取不受此選項影響。
- repack.packKeptObjects
-
如果設定為 true,則會使
git repack
的行為如同傳遞了--pack-kept-objects
。請參閱 git-repack[1] 以了解詳細資訊。預設值通常為false
,但如果正在寫入點陣圖索引(透過--write-bitmap-index
或repack.writeBitmaps
),則為true
。 - repack.useDeltaIslands
-
如果設定為 true,則會使
git repack
的行為如同傳遞了--delta-islands
。預設值為false
。 - repack.writeBitmaps
-
如果為 true,則當將所有物件封裝到磁碟時(例如,當執行
git repack -a
時),git 會寫入點陣圖索引。此索引可以加速後續為複製和提取建立的套件的「計算物件」階段,但會增加一些磁碟空間和初始重新封裝的額外時間。如果建立多個套件檔案,則不會有任何影響。在裸儲存庫中預設為 true,否則為 false。 - repack.updateServerInfo
-
如果設定為 false,git-repack[1] 將不會執行 git-update-server-info[1]。預設值為 true。當 git-repack[1] 的
-n
選項設定為 true 時,可以覆寫此選項。 - repack.cruftWindow
- repack.cruftWindowMemory
- repack.cruftDepth
- repack.cruftThreads
-
當產生 cruft 套件時 git-pack-objects[1] 使用的參數,並且命令列中未給定個別參數。請參閱類似命名的
pack.*
組態變數以了解預設值和意義。 - rerere.autoUpdate
-
如果設定為 true,
git-rerere
會在使用先前記錄的解析乾淨地解決衝突後,使用產生的內容更新索引。預設值為 false。 - rerere.enabled
-
啟用已解決衝突的記錄功能,以便在再次遇到相同的衝突區塊時可以自動解決。預設情況下,如果
$GIT_DIR
下有rr-cache
目錄(例如,先前在儲存庫中使用過「rerere」),則會啟用 git-rerere[1]。 - revert.reference
-
將此變數設定為 true 會使
git revert
的行為如同給定了--reference
選項。 - safe.bareRepository
-
指定 Git 將與哪些裸儲存庫一起工作。目前支援的值有:
- safe.directory
-
這些設定項目指定即使由非目前使用者擁有的 Git 追蹤目錄,也被視為安全。預設情況下,Git 會拒絕解析由其他人擁有的儲存庫的 Git 設定,更不用說執行其鉤子,而此設定允許使用者指定例外情況,例如用於有意共享的儲存庫(請參閱 git-init[1] 中的
--shared
選項)。這是一個多值設定,也就是說,您可以透過
git config --add
新增多個目錄。若要重設安全目錄的列表(例如,覆寫系統設定中指定的任何此類目錄),請新增一個值為空的safe.directory
項目。此設定選項僅在受保護的設定中有效(請參閱 SCOPES)。這可以防止不受信任的儲存庫篡改此值。
此設定的值會被插值,也就是說,
~/<path>
會展開為相對於主目錄的路徑,而%(prefix)/<path>
會展開為相對於 Git (執行階段) 前綴的路徑。若要完全選擇退出此安全檢查,請將
safe.directory
設定為字串*
。這將允許將所有儲存庫視為其目錄已列在safe.directory
列表中。如果在系統設定中設定了safe.directory=*
,並且您想要重新啟用此保護,請在列出您認為安全的儲存庫之前,使用空值初始化您的列表。提供附加了/*
的目錄將允許存取指定目錄下的所有儲存庫。如前所述,預設情況下,Git 只允許您存取您自己擁有的儲存庫,也就是執行 Git 的使用者。然而,當 Git 在提供 sudo 的非 Windows 平台上以root身份執行時,git 會檢查 sudo 建立的 SUDO_UID 環境變數,除了root的 ID 外,還允許存取記錄為其值的 uid。這是為了讓安裝期間常見的順序 "make && sudo make install" 更容易執行。在 sudo 下執行的 git 程序以 root 身份執行,但 sudo 命令會匯出環境變數以記錄原始使用者的 ID。如果這不是您想要的,並且您希望 git 只信任 root 擁有的儲存庫,那麼您可以在叫用 git 之前,從 root 的環境中移除
SUDO_UID
變數。 - sendemail.identity
-
一個設定身分。當指定時,會導致 sendemail.<身分> 子區段中的值優先於 sendemail 區段中的值。預設身分是
sendemail.identity
的值。 - sendemail.smtpEncryption
-
請參閱 git-send-email[1] 以取得描述。請注意,此設定不受身分機制影響。
- sendemail.smtpSSLCertPath
-
ca-certificates 的路徑(可以是目錄或單個檔案)。將其設定為空字串以停用憑證驗證。
- sendemail.<身分>.*
-
sendemail.* 參數的特定於身分的版本,當透過命令列或
sendemail.identity
選擇此身分時,會優先於這些參數。 - sendemail.multiEdit
-
如果為 true(預設),將會產生單個編輯器實例來編輯您必須編輯的檔案(當使用
--annotate
時的修補程式,以及當使用--compose
時的摘要)。如果為 false,檔案將會一個接一個地編輯,每次都產生一個新的編輯器。 - sendemail.confirm
-
設定是否在傳送之前確認的預設值。必須是 always、never、cc、compose 或 auto 其中之一。請參閱 git-send-email[1] 文件中
--confirm
的這些值的含義。 - sendemail.mailmap
-
如果為 true,則使 git-send-email[1] 假定
--mailmap
,否則假定--no-mailmap
。預設為 false。 - sendemail.mailmap.file
-
git-send-email[1] 特定的增強郵件映射檔案的位置。預設的郵件映射和
mailmap.file
會先載入。因此,此檔案中的項目會優先於預設郵件映射位置中的項目。請參閱 gitmailmap[5]。 - sendemail.mailmap.blob
-
與
sendemail.mailmap.file
類似,但將該值視為儲存庫中 Blob 的參考。sendemail.mailmap.file
中的項目會優先於此處的項目。請參閱 gitmailmap[5]。 - sendemail.aliasesFile
-
為了避免輸入過長的電子郵件地址,請將此指向一個或多個電子郵件別名檔案。您還必須提供
sendemail.aliasFileType
。 - sendemail.aliasFileType
-
在 sendemail.aliasesFile 中指定之檔案的格式。必須是 mutt、mailrc、pine、elm、gnus 或 sendmail 其中之一。
每個格式的別名檔案的外觀可以在同名電子郵件程式的文件中找到。標準格式的差異和限制如下所述
- sendemail.annotate
- sendemail.bcc
- sendemail.cc
- sendemail.ccCmd
- sendemail.chainReplyTo
- sendemail.envelopeSender
- sendemail.from
- sendemail.headerCmd
- 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] 命令列選項提供了預設值。有關詳細資訊,請參閱其文件。
- sendemail.signedOffCc(已棄用)
-
sendemail.signedOffByCc
的已棄用別名。 - sendemail.smtpBatchSize
-
每個連線要傳送的訊息數,之後會重新登入。如果值為 0 或未定義,則在一個連線中傳送所有訊息。另請參閱 git-send-email[1] 的
--batch-size
選項。 - sendemail.smtpReloginDelay
-
重新連線到 smtp 伺服器之前要等待的秒數。另請參閱 git-send-email[1] 的
--relogin-delay
選項。 - sendemail.forbidSendmailVariables
-
為了避免常見的設定錯誤,如果存在任何「sendmail」的設定選項,git-send-email[1] 將會中止並發出警告。設定此變數可繞過檢查。
- sequence.editor
-
git rebase -i
用於編輯 rebase 指令檔案的文字編輯器。該值在使用時應由 shell 解釋。可以使用GIT_SEQUENCE_EDITOR
環境變數覆寫它。如果未設定,則會改為使用預設的 commit 訊息編輯器。 - showBranch.default
-
git-show-branch[1] 的預設分支集合。請參閱 git-show-branch[1]。
- sparse.expectFilesOutsideOfPatterns
-
通常在使用稀疏檢出時,不符合任何稀疏模式的檔案會在索引中標記為 SKIP_WORKTREE 位元,並且在工作樹中遺失。因此,Git 通常會檢查具有 SKIP_WORKTREE 位元的檔案實際上是否存在於工作樹中,這與預期相反。如果 Git 找到任何檔案,它會清除相關的 SKIP_WORKTREE 位元,將這些路徑標記為存在。可以使用此選項告知 Git,此類儘管被跳過但仍然存在的檔案是預期的,並停止檢查它們。
預設值為
false
,這允許 Git 自動從索引和工作樹中檔案列表的同步問題中恢復。如果您的環境中有外部因素可減輕 Git 在工作樹檔案存在與稀疏模式之間維護一致性的責任,請將此設定為
true
。例如,如果您有一個能感知 Git 的虛擬檔案系統,該系統具有強大的機制,可根據存取模式保持工作樹和稀疏模式的更新。無論此設定為何,除非啟用稀疏檢出,否則 Git 不會檢查是否存在已略過的檔案,因此,除非
core.sparseCheckout
為true
,否則此設定選項無效。 - splitIndex.maxPercentChange
-
當使用分割索引功能時,此設定指定分割索引可包含的條目百分比,相對於分割索引和共享索引中的總條目數,超過此百分比就會寫入新的共享索引。值應介於 0 和 100 之間。如果值為 0,則始終會寫入新的共享索引;如果值為 100,則永遠不會寫入新的共享索引。預設值為 20,因此,如果分割索引中的條目數大於總條目數的 20%,則會寫入新的共享索引。請參閱 git-update-index[1]。
-
當使用分割索引功能時,自此變數指定的時間以來未修改的共享索引檔案,將在建立新的共享索引檔案時移除。值「now」會立即過期所有條目,「never」則完全禁止過期。預設值為「2.weeks.ago」。請注意,每次根據共享索引建立新的分割索引檔案或從共享索引讀取時,都會將共享索引檔案視為已修改(用於過期目的)。請參閱 git-update-index[1]。
- ssh.variant
-
預設情況下,Git 會根據設定的 SSH 命令的基本名稱 (使用環境變數
GIT_SSH
或GIT_SSH_COMMAND
或組態設定core.sshCommand
設定) 來決定要使用的命令列引數。如果基本名稱無法辨識,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 command -
simple
- [username@]host command -
plink
或putty
- [-P port] [-4] [-6] [username@]host command -
tortoiseplink
- [-P port] [-4] [-6] -batch [username@]host command
除了
simple
變體之外,命令列參數可能會隨著 git 新增功能而變更。 -
- stash.showIncludeUntracked
-
如果設定為 true,
git stash show
命令將會顯示儲藏條目的未追蹤檔案。預設值為 false。請參閱 git-stash[1] 中 show 命令的描述。 - stash.showPatch
-
如果設定為 true,沒有選項的
git stash show
命令將會以 patch 形式顯示儲藏條目。預設值為 false。請參閱 git-stash[1] 中 show 命令的描述。 - stash.showStat
-
如果設定為 true,沒有選項的
git stash show
命令將會顯示儲藏條目的 diffstat。預設值為 true。請參閱 git-stash[1] 中 show 命令的描述。 - status.relativePaths
-
預設情況下,git-status[1] 會顯示相對於目前目錄的路徑。將此變數設定為
false
會顯示相對於儲存庫根目錄的路徑 (這是 v1.5.4 之前 Git 的預設值)。 - status.short
-
設定為 true 以在 git-status[1] 中預設啟用 --short。選項 --no-short 的優先順序高於此變數。
- status.branch
-
設定為 true 以在 git-status[1] 中預設啟用 --branch。選項 --no-branch 的優先順序高於此變數。
- status.aheadBehind
-
設定為 true 以在 git-status[1] 的非 porcelain 狀態格式中預設啟用
--ahead-behind
,設定為 false 以啟用--no-ahead-behind
。預設值為 true。 - status.displayCommentPrefix
-
如果設定為 true,git-status[1] 會在每個輸出行的前面插入註解字首 (從
core.commentChar
開始,也就是預設的#
)。這是 Git 1.8.4 和更早版本中 git-status[1] 的行為。預設值為 false。 - status.renameLimit
-
在 git-status[1] 和 git-commit[1] 中執行重新命名偵測時要考量的檔案數。預設值為 diff.renameLimit 的值。
- status.renames
-
Git 在 git-status[1] 和 git-commit[1] 中偵測重新命名的方式和是否偵測。如果設定為「false」,則會停用重新命名偵測。如果設定為「true」,則會啟用基本重新命名偵測。如果設定為「copies」或「copy」,Git 也會偵測複製。預設值為 diff.renames 的值。
- status.showStash
-
如果設定為 true,git-status[1] 會顯示目前儲藏的條目數。預設值為 false。
- status.showUntrackedFiles
-
預設情況下,git-status[1] 和 git-commit[1] 會顯示目前未由 Git 追蹤的檔案。僅包含未追蹤檔案的目錄,只會顯示目錄名稱。顯示未追蹤的檔案表示 Git 需要對整個儲存庫中的所有檔案執行 lstat(),這在某些系統上可能會很慢。因此,此變數會控制命令如何顯示未追蹤的檔案。可能的值為
-
no
- 不顯示未追蹤的檔案。 -
normal
- 顯示未追蹤的檔案和目錄。 -
all
- 也顯示未追蹤目錄中的個別檔案。
如果未指定此變數,則預設為 *normal*。布林值
true
的所有常用拼法都會被視為normal
,而false
會被視為no
。可以使用 git-status[1] 和 git-commit[1] 的 -u|--untracked-files 選項來覆寫此變數。 -
- status.submoduleSummary
-
預設值為 false。如果設定為非零數值或 true (與 -1 或無限數字相同),則會啟用子模組摘要,並顯示已修改子模組的提交摘要 (請參閱 git-submodule[1] 的 --summary-limit 選項)。請注意,當
diff.ignoreSubmodules
設定為 *all* 時,或僅針對submodule.<name>.ignore=all
的那些子模組,摘要輸出命令將會被抑制。該規則的唯一例外是,status 和 commit 將會顯示已暫存的子模組變更。若要檢視已忽略子模組的摘要,您可以使用 --ignore-submodules=dirty 命令列選項或 *git submodule summary* 命令,該命令會顯示類似的輸出,但不符合這些設定。 - submodule.<name>.url
-
子模組的 URL。此變數透過 *git submodule init* 從 .gitmodules 檔案複製到 git config。使用者可以在透過 *git submodule update* 取得子模組之前,變更設定的 URL。如果既未設定 submodule.<name>.active 也未設定 submodule.active,則此變數的存在會作為回退,以指示子模組是否是 git 命令的重點。詳細資訊請參閱 git-submodule[1] 和 gitmodules[5]。
- submodule.<name>.update
-
子模組由 *git submodule update* 更新的方法,這是唯一受影響的命令,其他命令 (例如 *git checkout --recurse-submodules*) 不受影響。它之所以存在,是出於歷史原因,當時 *git submodule* 是唯一與子模組互動的命令;
submodule.active
和pull.rebase
等設定更具體。它是由git submodule init
從 gitmodules[5] 檔案填入。請參閱 git-submodule[1] 中 update 命令的描述。 - submodule.<name>.branch
-
子模組的遠端分支名稱,由
git submodule update --remote
使用。設定此選項以覆寫在.gitmodules
檔案中找到的值。詳細資訊請參閱 git-submodule[1] 和 gitmodules[5]。 - submodule.<name>.fetchRecurseSubmodules
-
此選項可用於控制此子模組的遞迴擷取。可以使用「git fetch」和「git pull」的 --[no-]recurse-submodules 命令列選項來覆寫它。此設定會覆寫 gitmodules[5] 檔案中的設定。
- submodule.<name>.ignore
-
定義在何種情況下,「git status」和 diff 系列會將子模組顯示為已修改。當設定為「all」時,永遠不會被視為已修改 (但它仍會在已暫存時顯示在 status 和 commit 的輸出中),「dirty」會忽略子模組工作樹的所有變更,並且只考慮子模組的 HEAD 與超級專案中記錄的提交之間的差異。「untracked」還會讓工作樹中具有已修改追蹤檔案的子模組顯示出來。使用「none」(未設定此選項時的預設值) 也會顯示工作樹中具有未追蹤檔案的子模組為已變更。此設定會覆寫 .gitmodules 中針對此子模組所做的任何設定,這兩個設定都可以在命令列上使用「--ignore-submodules」選項來覆寫。*git submodule* 命令不受此設定的影響。
- submodule.<name>.active
-
指示子模組是否是 git 命令重點的布林值。此組態選項的優先順序高於 submodule.active 組態選項。詳細資訊請參閱 gitsubmodules[7]。
- submodule.active
-
一個重複的欄位,其中包含用於比對子模組路徑以判斷子模組是否是 git 命令重點的路徑規範。詳細資訊請參閱 gitsubmodules[7]。
- submodule.recurse
-
一個布林值,指示命令是否應預設啟用
--recurse-submodules
選項。預設值為 false。當設定為 true 時,可透過
--no-recurse-submodules
選項停用。請注意,某些缺乏此選項的 Git 指令可能會呼叫受submodule.recurse
影響的上述某些指令;例如,git remote update
會呼叫git fetch
,但沒有--no-recurse-submodules
選項。對於這些指令,一個解決方法是暫時使用git -c submodule.recurse=0
變更組態值。以下列表顯示接受
--recurse-submodules
的指令,以及這些指令是否受此設定支援。-
checkout
、fetch
、grep
、pull
、push
、read-tree
、reset
、restore
和switch
總是受支援。 -
clone
和ls-files
不受支援。 -
只有在啟用
submodule.propagateBranches
時,branch
才受支援。
-
- submodule.propagateBranches
-
[實驗性] 一個布林值,用於在使用
--recurse-submodules
或submodule.recurse=true
時啟用分支支援。啟用此選項將允許某些指令接受--recurse-submodules
,並且某些已接受--recurse-submodules
的指令現在會考慮分支。預設值為 false。 - submodule.fetchJobs
-
指定同時提取/複製的子模組數量。正整數表示允許平行提取的子模組數量上限。值為 0 將給出合理的預設值。如果未設定,則預設值為 1。
- submodule.alternateLocation
-
指定在複製子模組時,子模組如何取得替代位置。可能的值為
no
、superproject
。預設情況下,假設為no
,這不會新增任何參考。當值設定為superproject
時,要複製的子模組會計算其相對於上層專案替代位置的替代位置。 - submodule.alternateErrorStrategy
-
指定如何處理透過
submodule.alternateLocation
計算出的子模組替代位置的錯誤。可能的值為ignore
、info
、die
。預設值為die
。請注意,如果設定為ignore
或info
,並且計算出的替代位置有錯誤,則複製會像未指定任何替代位置一樣繼續進行。 - tag.forceSignAnnotated
-
一個布林值,用於指定建立的附註標籤是否應使用 GPG 簽署。如果在命令列上指定了
--annotate
,則它會優先於此選項。 - tag.sort
-
此變數控制由 git-tag[1] 顯示時標籤的排序順序。如果未提供 "--sort=<value>" 選項,則將使用此變數的值作為預設值。
- tag.gpgSign
-
一個布林值,用於指定是否應使用 GPG 簽署所有標籤。在自動化腳本中執行時使用此選項可能會導致大量標籤被簽署。因此,使用代理程式以避免多次輸入您的 gpg 密碼短語會很方便。請注意,此選項不會影響由 "-u <keyid>" 或 "--local-user=<keyid>" 選項啟用的標籤簽署行為。
- tar.umask
-
此變數可用於限制 tar 封存項目中的權限位元。預設值為 0002,這會關閉全域寫入位元。特殊值 "user" 表示將改用封存使用者的 umask。請參閱 umask(2) 和 git-archive[1]。
Trace2 組態設定僅從系統和全域組態檔案讀取;不考慮儲存庫本機和工作樹組態檔案以及 -c
命令列引數。
- trace2.normalTarget
-
此變數控制一般目標目的地。它可能會被
GIT_TRACE2
環境變數覆寫。下表顯示可能的值。 - trace2.perfTarget
-
此變數控制效能目標目的地。它可能會被
GIT_TRACE2_PERF
環境變數覆寫。下表顯示可能的值。 - trace2.eventTarget
-
此變數控制事件目標目的地。它可能會被
GIT_TRACE2_EVENT
環境變數覆寫。下表顯示可能的值。-
0
或false
- 停用目標。 -
1
或true
- 寫入到STDERR
。 -
[2-9]
- 寫入到已開啟的檔案描述符。 -
<absolute-pathname>
- 以附加模式寫入檔案。如果目標已存在並且是一個目錄,則追蹤將寫入到給定目錄下的檔案(每個程序一個)。 -
af_unix:[<socket-type>:]<absolute-pathname>
- 寫入到 Unix DomainSocket(在支援它們的平台上)。Socket 類型可以是stream
或dgram
;如果省略,Git 將嘗試兩者。
-
- trace2.normalBrief
-
布林值。當為 true 時,一般輸出會省略
time
、filename
和line
欄位。可能會被GIT_TRACE2_BRIEF
環境變數覆寫。預設值為 false。 - trace2.perfBrief
-
布林值。當為 true 時,PERF 輸出會省略
time
、filename
和line
欄位。可能會被GIT_TRACE2_PERF_BRIEF
環境變數覆寫。預設值為 false。 - trace2.eventBrief
-
布林值。當為 true 時,事件輸出會省略
time
、filename
和line
欄位。可能會被GIT_TRACE2_EVENT_BRIEF
環境變數覆寫。預設值為 false。 - trace2.eventNesting
-
整數。指定事件輸出中巢狀區域的所需深度。將省略深度大於此值的區域。可能會被
GIT_TRACE2_EVENT_NESTING
環境變數覆寫。預設值為 2。 - trace2.configParams
-
一個逗號分隔的「重要」組態設定模式清單,應記錄在 trace2 輸出中。例如,
core.*,remote.*.url
將導致 trace2 輸出包含列出每個已設定遠端的事件。可能會被GIT_TRACE2_CONFIG_PARAMS
環境變數覆寫。預設未設定。 - trace2.envVars
-
一個逗號分隔的「重要」環境變數清單,應記錄在 trace2 輸出中。例如,
GIT_HTTP_USER_AGENT,GIT_CONFIG
將導致 trace2 輸出包含列出 HTTP 使用者代理程式和 Git 組態檔案位置的覆寫(假設已設定任何)。可能會被GIT_TRACE2_ENV_VARS
環境變數覆寫。預設未設定。 - trace2.destinationDebug
-
布林值。當為 true 時,如果無法開啟追蹤目標目的地進行寫入,Git 將列印錯誤訊息。預設情況下,會抑制這些錯誤,並以靜默方式停用追蹤。可能會被
GIT_TRACE2_DST_DEBUG
環境變數覆寫。 - trace2.maxFiles
-
整數。當將追蹤檔案寫入到目標目錄時,如果寫入額外的追蹤會超出此檔案數量,則不要寫入額外的追蹤。而是寫入一個信號檔案,該檔案將阻止進一步追蹤到此目錄。預設值為 0,這會停用此檢查。
- transfer.credentialsInUrl
-
設定的 URL 可以包含純文字認證,格式為
<protocol>://<user>:<password>@<domain>/<path>
。您可能想要警告或禁止使用此類組態(轉而使用 git-credential[1])。這將用於 git-clone[1]、git-fetch[1]、git-push[1] 和任何其他直接使用已設定 URL 的情況。請注意,目前僅限於偵測
remote.<name>.url
組態中的認證;它不會偵測remote.<name>.pushurl
組態中的認證。您可能想要啟用此功能以防止無意間暴露認證,例如,因為
-
您正在執行 git 的作業系統或系統可能無法提供一種方式或以其他方式允許您設定儲存使用者名稱和/或密碼的組態檔案的權限。
-
即使可以,將此類資料「靜態」儲存可能會以其他方式暴露您,例如,備份程序可能會將資料複製到另一個系統。
-
git 程式會將完整的 URL 作為命令列上的引數傳遞給彼此,這表示認證將暴露給系統上允許他們看到其他使用者完整程序列表的其他非特權使用者。在 Linux 上,procfs(5) 中記錄的 "hidepid" 設定允許設定此行為。
如果這些疑慮不適用於您,那麼您可能不需要擔心由於在 git 組態檔案中儲存敏感資料而導致的認證暴露。如果您確實想使用此功能,請將
transfer.credentialsInUrl
設定為以下其中一個值 -
allow
(預設):Git 將在沒有警告的情況下繼續其活動。 -
warn
:當解析包含純文字認證的 URL 時,Git 將向stderr
寫入警告訊息。 -
die
:當解析包含純文字認證的 URL 時,Git 將向stderr
寫入失敗訊息。
-
- transfer.fsckObjects
-
當未設定
fetch.fsckObjects
或receive.fsckObjects
時,將改用此變數的值。預設值為 false。設定後,如果物件格式錯誤或連結到不存在的物件,提取或接收將中止。此外,還會檢查各種其他問題,包括舊版問題(請參閱
fsck.<msg-id>
)和潛在的安全問題,例如存在.GIT
目錄或惡意的.gitmodules
檔案(詳細資訊請參閱 v2.2.1 和 v2.17.1 的發行說明)。未來版本可能會新增其他健全性和安全檢查。在接收端,失敗的 fsckObjects 將使這些物件無法存取,請參閱 git-receive-pack[1] 中的「隔離環境」。在提取端,格式錯誤的物件將改為留在儲存庫中,不被參考。
由於
fetch.fsckObjects
實作的非隔離性質,它無法像receive.fsckObjects
一樣被信賴來保持物件儲存區的乾淨。由於物件是在解壓縮時寫入物件儲存區的,因此可能會出現這樣的情況,即使「提取」失敗,也可能會引入惡意的物件,只是隨後的「提取」成功,因為只會檢查新傳入的物件,而不是那些已寫入物件儲存區的物件。不應依賴行為上的差異。將來,這些物件也可能會為「提取」而隔離。
目前,偏執的人需要找到某種方法來模擬隔離環境,如果他們想要與「推送」相同的保護。例如,在內部鏡像的情況下,請分兩步驟進行鏡像,一步提取不受信任的物件,然後執行第二個「推送」(將使用隔離)到另一個內部儲存庫,並讓內部客戶端使用這個推送到的儲存庫,或禁止內部提取,並且僅在執行完整的「fsck」(並且在此期間沒有發生新的提取)後才允許它們。
- transfer.hideRefs
-
字串,
receive-pack
和upload-pack
用來決定從它們的初始廣告中省略哪些 refs。使用多個定義來指定多個前綴字串。一個 ref 若位於此變數值所列出的階層之下,則會被排除,並且在回應git push
或git fetch
時會被隱藏。請參閱receive.hideRefs
和uploadpack.hideRefs
以了解此設定的程式特定版本。您也可以在 ref 名稱前面加上
!
來否定該條目,明確地公開它,即使較早的條目將其標記為隱藏。如果您有多個 hideRefs 值,則後面的條目會覆蓋前面的條目(並且更特定設定檔中的條目會覆蓋較不特定設定檔中的條目)。如果正在使用命名空間,則會在將每個參考與
transfer.hiderefs
模式比對之前,先從每個參考中剝離命名空間前綴。為了在剝離之前比對 refs,請在 ref 名稱前面加上^
。如果您結合!
和^
,則必須先指定!
。例如,如果在
transfer.hideRefs
中指定了refs/heads/master
,且目前的命名空間是foo
,則會從廣告中省略refs/namespaces/foo/refs/heads/master
。如果設定了uploadpack.allowRefInWant
,則upload-pack
會在協定 v2 的fetch
命令中,將want-ref refs/heads/master
視為refs/namespaces/foo/refs/heads/master
不存在。另一方面,receive-pack
仍然會宣傳 ref 指向的物件 ID,而不會提及它的名稱(所謂的 ".have" 行)。即使您隱藏了 refs,客戶端仍然可以透過 gitnamespaces[7] 手冊頁的「安全性」章節中描述的技術來竊取目標物件;最好將私人資料保存在單獨的儲存庫中。
- transfer.unpackLimit
-
當未設定
fetch.unpackLimit
或receive.unpackLimit
時,將改用此變數的值。預設值為 100。 - transfer.advertiseSID
-
布林值。如果為 true,則客戶端和伺服器程序會將其唯一的會話 ID 宣傳給遠端對應端。預設值為 false。
- transfer.bundleURI
-
如果為
true
,則本機git clone
命令會從遠端伺服器請求套件資訊(如果已宣傳),並在透過 Git 協定繼續複製之前下載套件。預設值為false
。 - transfer.advertiseObjectInfo
-
如果為
true
,則伺服器會宣傳object-info
功能。預設值為 false。 - uploadarchive.allowUnreachable
-
如果為 true,則允許客戶端使用
git archive --remote
來請求任何樹狀結構,無論是否可從 ref tips 存取。有關更多詳細資訊,請參閱 git-upload-archive[1] 的「安全性」章節中的討論。預設值為false
。 - uploadpack.hideRefs
-
此變數與
transfer.hideRefs
相同,但僅適用於upload-pack
(因此僅影響擷取,而不影響推送)。嘗試透過git fetch
擷取隱藏的 ref 會失敗。另請參閱uploadpack.allowTipSHA1InWant
。 - uploadpack.allowTipSHA1InWant
-
當
uploadpack.hideRefs
生效時,允許upload-pack
接受要求隱藏 ref 尖端物件的擷取請求(預設情況下,會拒絕此類請求)。另請參閱uploadpack.hideRefs
。即使此值為 false,客戶端仍然可以透過 gitnamespaces[7] 手冊頁的「安全性」章節中描述的技術來竊取物件;最好將私人資料保存在單獨的儲存庫中。 - uploadpack.allowReachableSHA1InWant
-
允許
upload-pack
接受要求可從任何 ref tip 存取的物件的擷取請求。但是,請注意,計算物件可存取性在計算上是耗費資源的。預設值為false
。即使此值為 false,客戶端仍然可以透過 gitnamespaces[7] 手冊頁的「安全性」章節中描述的技術來竊取物件;最好將私人資料保存在單獨的儲存庫中。 - 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
以建立客戶端的封裝檔時,它將改為執行此 shell 命令。pack-objects
命令及其將要執行的引數(包括開頭的git pack-objects
)會附加到 shell 命令。hook 的 stdin 和 stdout 的處理方式,就如同執行了pack-objects
本身一樣。也就是說,upload-pack
會將預期用於pack-objects
的輸入饋送到 hook,並期望 stdout 上有一個已完成的封裝檔。請注意,只有在受保護的設定中指定此設定變數時,才會考慮它(請參閱 SCOPES)。這是一種防止從不受信任的儲存庫中擷取的安全措施。
- uploadpack.allowFilter
-
如果設定了此選項,則
upload-pack
將支援部分複製和部分擷取物件篩選。 - uploadpackfilter.allow
-
為未指定的物件篩選提供預設值(請參閱:以下設定變數)。如果設定為
true
,這也將啟用未來新增的所有篩選器。預設值為true
。 - uploadpackfilter.<filter>.allow
-
明確允許或禁止對應於
<filter>
的物件篩選,其中<filter>
可以是以下其中之一:blob:none
、blob:limit
、object:type
、tree
、sparse:oid
或combine
。如果使用組合篩選器,則必須允許combine
和所有巢狀篩選器類型。預設值為uploadpackfilter.allow
。 - uploadpackfilter.tree.maxDepth
-
僅當
<n>
不超過uploadpackfilter.tree.maxDepth
的值時,才允許--filter=tree:<n>
。如果設定,這也表示uploadpackfilter.tree.allow=true
,除非已設定此設定變數。如果未設定,則無效。 - uploadpack.allowRefInWant
-
如果設定了此選項,則
upload-pack
將支援協定版本 2fetch
命令的ref-in-want
功能。此功能旨在讓負載平衡伺服器受益,因為負載平衡伺服器可能由於複寫延遲而對其 refs 指向的 OID 沒有相同的檢視。 - url.<base>.insteadOf
-
任何以此值開頭的 URL 都會被改寫為以 <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.name
- user.email
- author.name
- author.email
- committer.name
- committer.email
-
user.name
和user.email
變數會決定最終出現在提交物件的author
和committer
欄位中的內容。如果您需要author
或committer
不同,則可以設定author.name
、author.email
、committer.name
或committer.email
變數。所有這些都可以被GIT_AUTHOR_NAME
、GIT_AUTHOR_EMAIL
、GIT_COMMITTER_NAME
、GIT_COMMITTER_EMAIL
和EMAIL
環境變數覆寫。請注意,這些變數的
name
形式通常是指某種形式的個人姓名。有關這些設定以及credential.username
選項的更多資訊(如果您正在尋找驗證憑證),請參閱 git-commit[1] 和 git[1] 的環境變數章節。 - user.useConfigOnly
-
指示 Git 避免嘗試猜測
user.email
和user.name
的預設值,而是僅從設定中擷取這些值。例如,如果您有多個電子郵件地址,並且想要為每個儲存庫使用不同的電子郵件地址,則在全域設定中將此設定選項設定為true
並加上名稱,Git 會提示您在新的複製儲存庫中建立新提交之前設定電子郵件。預設值為false
。 - user.signingKey
-
如果在建立簽署標籤或提交時,git-tag[1] 或 git-commit[1] 沒有自動選擇您想要的金鑰,您可以使用此變數覆寫預設選擇。此選項會原封不動地傳遞給 gpg 的 --local-user 參數,因此您可以使用 gpg 支援的任何方法來指定金鑰。如果 gpg.format 設定為
ssh
,則此變數可以包含您的私密 ssh 金鑰或在使用 ssh-agent 時的公鑰路徑。或者,它可以直接包含一個以key::
為前綴的公鑰(例如:"key::ssh-rsa XXXXXX identifier")。私密金鑰需要透過 ssh-agent 提供。如果未設定,Git 會呼叫 gpg.ssh.defaultKeyCommand(例如:"ssh-add -L")並嘗試使用第一個可用的金鑰。為了向後相容,以 "ssh-" 開頭的原始金鑰,例如 "ssh-rsa XXXXXX identifier",會被視為 "key::ssh-rsa XXXXXX identifier",但這種形式已棄用;請改用key::
形式。 - versionsort.prereleaseSuffix(已棄用)
-
versionsort.suffix
的已棄用別名。如果設定了versionsort.suffix
,則會忽略此設定。 - versionsort.suffix
-
即使在 git-tag[1] 中使用版本排序,具有相同基本版本但具有不同後綴的標籤名稱仍然會按字典順序排序,導致例如預發布標籤出現在主版本之後(例如 "1.0-rc1" 在 "1.0" 之後)。可以指定此變數來決定具有不同後綴的標籤的排序順序。
在此變數中指定單個後綴後,任何包含該後綴的標籤名稱都會出現在相應的主版本之前。例如,如果變數設定為 "-rc",則所有 "1.0-rcX" 標籤都會出現在 "1.0" 之前。如果多次指定,每個後綴一次,則配置中後綴的順序將決定具有這些後綴的標籤名稱的排序順序。例如,如果 "-pre" 在配置中出現在 "-rc" 之前,則所有 "1.0-preX" 標籤都會列在任何 "1.0-rcX" 標籤之前。主發布標籤相對於具有各種後綴的標籤的位置可以透過在其他後綴中指定空後綴來確定。例如,如果後綴 "-rc"、""、"-ck" 和 "-bfs" 在配置中按此順序出現,則所有 "v4.8-rcX" 標籤會先列出,然後是 "v4.8",接著是 "v4.8-ckX",最後是 "v4.8-bfsX"。
如果多個後綴匹配同一個標籤名稱,則該標籤名稱將根據標籤名稱中最早位置開始的後綴進行排序。如果有多個不同的匹配後綴從該最早位置開始,則該標籤名稱將根據這些後綴中最長的後綴進行排序。如果不同的後綴位於多個設定檔中,則它們之間的排序順序未定義。
- web.browser
-
指定一些指令可能會使用的網頁瀏覽器。目前只有 git-instaweb[1] 和 git-help[1] 可能會使用它。
- worktree.guessRemote
-
如果未指定分支,並且未使用
-b
、-B
或--detach
,則git worktree add
預設會從 HEAD 建立一個新分支。如果worktree.guessRemote
設定為 true,則worktree add
會嘗試尋找名稱唯一匹配新分支名稱的遠端追蹤分支。如果存在這樣的分支,則會將其簽出並設定為新分支的「上游」。如果找不到這樣的匹配項,則會回復為從目前的 HEAD 建立新分支。
錯誤
使用已棄用的 [section.subsection]
語法時,如果子章節至少包含一個大寫字元,則變更值將導致新增多行金鑰而不是變更。例如,當設定檔看起來像
[section.subsection] key = value1
並且執行 git config section.Subsection.key value2
將導致
[section.subsection] key = value1 key = value2
GIT
屬於 git[1] 套件的一部分