設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.50.1 無更改
-
2.50.0
2025-06-16
- 2.49.1 無更改
-
2.49.0
2025-03-14
- 2.48.2 無變更
-
2.48.1
2025-01-13
-
2.48.0
2025-01-10
- 2.47.3 無變更
-
2.47.2
2024-11-26
-
2.47.1
2024-11-25
-
2.47.0
2024-10-06
- 2.46.4 無變更
-
2.46.3
2024-11-26
-
2.46.2
2024-09-23
-
2.46.1
2024-09-13
-
2.46.0
2024-07-29
- 2.45.4 無更改
-
2.45.3
2024-11-26
- 2.45.1 → 2.45.2 無更改
-
2.45.0
2024-04-29
- 2.44.4 無變更
-
2.44.3
2024-11-26
- 2.44.1 → 2.44.2 無變更
-
2.44.0
2024-02-23
- 2.43.7 無變更
-
2.43.6
2024-11-26
- 2.43.2 → 2.43.5 無變更
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
-
2.42.4
2024-11-26
- 2.42.2 → 2.42.3 無變更
-
2.42.1
2023-11-02
-
2.42.0
2023-08-21
-
2.41.3
2024-11-26
- 2.41.1 → 2.41.2 無變更
-
2.41.0
2023-06-01
-
2.40.4
2024-11-26
- 2.40.1 → 2.40.3 無變更
-
2.40.0
2023-03-12
- 2.39.1 → 2.39.5 無變化
-
2.39.0
2022-12-12
- 2.38.3 → 2.38.5 無更改
-
2.38.2
2022-12-11
-
2.38.1
2022-10-07
-
2.38.0
2022-10-02
- 2.37.5 → 2.37.7 無變更
-
2.37.4
2022-10-06
- 2.37.3 無變更
-
2.37.2
2022-08-11
- 2.37.1 無變更
-
2.37.0
2022-06-27
- 2.36.4 → 2.36.6 無變更
-
2.36.3
2022-10-06
-
2.36.2
2022-06-23
- 2.36.1 無變更
-
2.36.0
2022-04-18
- 2.35.6 → 2.35.8 無變更
-
2.35.5
2022-10-06
-
2.35.4
2022-06-23
-
2.35.3
2022-04-13
-
2.35.2
2022-03-23
- 2.35.1 無變更
-
2.35.0
2022-01-24
- 2.34.6 → 2.34.8 無變更
-
2.34.5
2022-10-06
-
2.34.4
2022-06-23
-
2.34.3
2022-04-13
-
2.34.2
2022-03-23
- 2.34.1 無變更
-
2.34.0
2021-11-15
- 2.33.6 → 2.33.8 無變更
-
2.33.5
2022-10-06
-
2.33.4
2022-06-23
-
2.33.3
2022-04-13
-
2.33.2
2022-03-23
-
2.33.1
2021-10-12
-
2.33.0
2021-08-16
- 2.32.5 → 2.32.7 無變更
-
2.32.4
2022-10-06
-
2.32.3
2022-06-23
-
2.32.2
2022-04-13
-
2.32.1
2022-03-23
-
2.32.0
2021-06-06
- 2.31.6 → 2.31.8 無變更
-
2.31.5
2022-10-06
-
2.31.4
2022-06-23
-
2.31.3
2022-04-13
-
2.31.2
2022-03-23
-
2.31.1
2021-03-26
-
2.31.0
2021-03-15
- 2.30.7 → 2.30.9 無變更
-
2.30.6
2022-10-06
-
2.30.5
2022-06-23
-
2.30.4
2022-04-13
-
2.30.3
2022-03-23
- 2.30.2 無變更
-
2.30.1
2021-02-08
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 無更改
-
2.29.0
2020-10-19
- 2.28.1 無更改
-
2.28.0
2020-07-27
- 2.27.1 無更改
-
2.27.0
2020-06-01
- 2.26.1 → 2.26.3 無更改
-
2.26.0
2020-03-22
- 2.25.3 → 2.25.5 無變更
-
2.25.2
2020-03-17
-
2.25.1
2020-02-17
-
2.25.0
2020-01-13
- 2.24.1 → 2.24.4 無更改
-
2.24.0
2019-11-04
- 2.23.1 → 2.23.4 無更改
-
2.23.0
2019-08-16
- 2.22.2 → 2.22.5 無更改
-
2.22.1
2019-08-11
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 無更改
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 無更改
-
2.20.0
2018-12-09
- 2.19.3 → 2.19.6 無更改
-
2.19.2
2018-11-21
- 2.19.1 無更改
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 無更改
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 無更改
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
-
2.11.4
2017-09-22
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
-
2.2.3
2015-09-04
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
概要
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> 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
,如果$XDG_CONFIG_HOME/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 <config-file>
- --file <config-file>
-
對於寫入選項:寫入指定檔案而不是倉庫
.git/config
。對於讀取選項:只從指定檔案讀取,而不是從所有可用檔案讀取。
另請參見 檔案。
- --blob <blob>
-
與
--file
類似,但使用給定 blob 而不是檔案。例如,您可以使用 master:.gitmodules 從 master 分支中的 .gitmodules 檔案讀取值。有關拼寫 blob 名稱的更完整方式列表,請參閱 gitrevisions[7] 中的“SPECIFYING REVISIONS”節。 - --fixed-value
-
與
value-pattern
引數一起使用時,將value-pattern
視為精確字串而不是正則表示式。這將限制匹配的名稱/值對僅限於值與value-pattern
完全相等的那些。 - --type <type>
-
git config 將確保任何輸入或輸出在給定型別約束下有效,並將輸出值規範化為 <type> 的規範形式。
有效的 <type> 包括:
-
bool: 將值
true
、yes
、on
和正數規範化為“true”,將值false
、no
、off
和0
規範化為“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 不規範化檢索到的變數。
--no-type
在沒有--type=
<type> 或--
<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
-
如果未向
git
config
提供--file
選項,則使用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
假設的代理命令條目實際上有一個字尾來區分它們適用於哪個 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
但是,如果您真的只想替換預設代理的行,即沒有“for ...”字尾的行,請執行以下操作:
% git config set --value='! for ' core.gitproxy ssh
要實際只匹配帶有感嘆號的值,您需要:
% git config set --value='[!]' section.key value
要新增新的代理,而不更改任何現有代理,請使用:
% 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] 的“CONFIGURATION FILE”節)用於儲存該倉庫的配置,而 $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
部分的條件評估結果不為 true,則可能會被忽略;請參閱下面的“條件包含”。
您可以透過將特殊變數 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 萬用字元和另外兩個**/
和/**
,它們可以匹配多個路徑元件。如果我們在一個工作樹中,並且當前檢出的分支名稱與該模式匹配,則滿足包含條件。如果模式以
/
結尾,則會自動新增**
。例如,模式foo/
會變成foo/**
。換句話說,它會匹配所有以foo/
開頭的分支。如果您的分支是分層組織的,並且您想將配置應用於該層次結構中的所有分支,這將非常有用。 hasconfig:remote.*.url:
-
此關鍵字後面的資料被視為一個模式,包含標準的 globbing 萬用字元和另外兩個
**/
和/**
,它們可以匹配多個元件。首次看到此關鍵字時,將掃描其餘配置檔案以查詢遠端 URL(不應用任何值)。如果至少存在一個與此模式匹配的遠端 URL,則滿足包含條件。透過此選項(直接或間接)包含的檔案不允許包含遠端 URL。
請注意,與其他 includeIf 條件不同,解析此條件依賴於在讀取條件時尚未知曉的資訊。典型的用例是此選項作為系統級或全域性級配置存在,而遠端 URL 在本地級配置中;因此在解析此條件時需要提前掃描。為了避免潛在包含的檔案可能影響這些檔案是否被潛在包含的“雞生蛋,蛋生雞”問題,Git 透過禁止這些檔案影響這些條件的解析(從而禁止它們宣告遠端 URL)來打破迴圈。
至於此關鍵字的命名,是為了向前相容支援更多基於變數的包含條件的命名方案,但目前 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
值
許多變數的值被視為簡單的字串,但也有一些變數接受特定型別的值,並且有關於如何拼寫它們的規則。
- 布林值
-
當一個變數被指定接受布林值時,true 和 false 有許多同義詞被接受;它們都不區分大小寫。
- 整數
-
許多指定各種大小的變數值可以後綴
k
、M
等,表示“按 1024 縮放”、“按 1024x1024 縮放”等。 - 顏色
-
接受顏色值的變數,其值是一個顏色列表(最多兩個,一個用於前景,一個用於背景)和屬性(任意數量),它們之間用空格分隔。
接受的基本顏色有
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
或其他屬性著色。然而,自定義日誌格式可能會進行更復雜和分層的著色,並且否定形式在那裡可能很有用。 - 路徑名
-
接受路徑名值的變數可以給定一個以 "
~/
" 或 "~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
而未提供 pathspec 引數時顯示。 - addIgnoredFile
-
當用戶嘗試將一個被忽略的檔案新增到索引時顯示。
- amWorkDir
-
當 git-am[1] 無法應用補丁檔案時顯示,以告知使用者檔案位置。
- ambiguousFetchRefspec
-
當多個遠端倉庫的 fetch refspec 對映到同一個遠端跟蹤分支名稱空間並導致分支跟蹤設定失敗時顯示。
- 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
-
當用戶嘗試在未設定 force 選項的情況下刪除未完全合併的分支時顯示。
- ignoredHook
-
當一個 hook 被忽略,因為該 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 待辦列表後出現錯誤時顯示。
- 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 別名是一個包含多個命令(例如在管道中)的“單行”指令碼,引用多個引數,或者無法處理在末尾新增的位置引數,則應小心。例如:將
alias.cmd
=
"!echo
$1
|grep
$2"
作為git
cmd
1
2
呼叫時,將執行為 echo $1 | grep $2 1 2,這不是您想要的結果。 -
處理這個問題的一個便捷方法是將您的指令碼操作寫入一個行內函數,然後透過命令列提供的任何引數呼叫該函式。例如 `alias.cmd = "!c() { echo $1 | grep $2 ; }; c" 將正確執行前一個示例。
-
設定
GIT_TRACE=1
可以幫助您除錯別名執行的命令。
-
-
- am.keepcr
-
如果為 true,git-am 將呼叫 git-mailsplit 處理 mbox 格式的補丁,並帶上引數
--keep-cr
。在這種情況下,git-mailsplit 不會從以 \r\n 結尾的行中刪除 \r。可以透過在命令列中提供--no-keep-cr
來覆蓋。請參閱 git-am[1]、git-mailsplit[1]。 - am.threeWay
-
預設情況下,如果補丁不能幹淨地應用,
git
am
將失敗。當設定為 true 時,此設定會告訴git
am
在補丁記錄了它應該應用到的 blob 的標識並且我們在本地有這些 blob 可用時,回退到三向合併(等同於從命令列給出--3way
選項)。預設為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.<name>.pattern
-
用於匹配引用名稱的正則表示式。由匹配此模式的引用指向的提交(並滿足以下條件,例如
bitmapPseudoMerge.
<name>.sampleRate
和bitmapPseudoMerge.
<name>.threshold
)將被考慮包含在偽合併點陣圖中。提交根據指向給定提交的任何引用是否匹配模式(這是一個擴充套件正則表示式)而被分組到偽合併組中。
在偽合併組內,提交可以根據模式中的捕獲組進一步分組到子組中。這些子分組是透過將正則表示式中的任何捕獲組用一個 - 短劃線連線起來形成的。
例如,如果模式是
refs/tags/
,那麼所有標籤(如果它們滿足以下條件)都將被視為同一偽合併組的候選。然而,如果模式改為refs/remotes/
([0-9
])+/tags/
,那麼來自不同遠端倉庫的標籤將根據遠端編號分組到不同的偽合併組中。 - bitmapPseudoMerge.<name>.decay
-
確定連續偽合併點陣圖組大小減小的速率。必須為非負數。此引數可以被認為是函式
f
(n
)=
C
*
n^-k
中的k
,其中f
(n
) 是第 n 個組的大小。將衰減率設定為
0
會使所有組的大小相同。將衰減率設定為1
會使第n
個組的大小為初始組的1/n
。衰減率的更高值會導致連續組以更快的速度縮小。預設值為1
。如果所有組的大小相同,那麼包含較新提交的組可能比早期組使用得更少,因為指向較新提交的引用比指向舊提交的引用更有可能被更頻繁地更新。
- bitmapPseudoMerge.<name>.sampleRate
-
確定選入不穩定偽合併點陣圖中非點陣圖化提交(在引用尖端中)的比例。必須在
0
和1
之間(包括兩端)。預設值為1
。 - bitmapPseudoMerge.<name>.threshold
-
確定非點陣圖化提交(在引用尖端中,如上所述)的最小年齡,這些提交是可用於不穩定偽合併點陣圖的候選。預設值為
1.week.ago
。 - bitmapPseudoMerge.<name>.maxMerges
-
確定提交可以分佈到的最大偽合併提交數量。
對於其模式不包含任何捕獲組的偽合併組,此設定適用於所有匹配正則表示式的提交。對於具有一個或多個捕獲組的模式,此設定適用於每個不同的捕獲組。
例如,如果你的捕獲組是
refs/tags/
,則此設定會將所有標籤分佈到最多maxMerges
個偽合併提交中。但是,如果你的捕獲組是,例如refs/remotes/
([0-9
]+
)/tags/
,則此設定將分別應用於每個遠端的標籤集。必須是非負數。預設值為 64。
- bitmapPseudoMerge.<name>.stableThreshold
-
確定提交(在引用尖端中,如上所述,但穩定提交即使已被點陣圖覆蓋仍被視為候選)的最小年齡,這些提交是用於穩定偽合併點陣圖的候選。預設值為
1.month.ago
。將此閾值設定為較小的值(例如,1.week.ago)將導致生成更多穩定組(這會產生一次性生成成本),但這些組可能會隨著時間推移變得過時。使用較大的值會產生相反的缺點(穩定組較少但更有用)。
- bitmapPseudoMerge.<name>.stableSize
-
確定穩定偽合併點陣圖的大小(以提交數量計)。預設值為
512
。 - blame.blankBoundary
-
在 git-blame[1] 中,為邊界提交顯示空白提交物件名稱。此選項預設為 false。
- blame.coloring
-
這決定了應用於 blame 輸出的著色方案。它可以是 repeatedLines、highlightRecent 或 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
選項按分支選擇此行為。此選項預設為true
。有效設定包括: branch.autoSetupRebase
-
當使用
git
branch
、git
switch
或git
checkout
建立跟蹤另一個分支的新分支時,此變數會告訴 Git 將拉取操作設定為 rebase 而不是 merge(請參閱branch.
<name>.rebase
)。有效設定包括:有關如何設定分支以跟蹤另一個分支的詳細資訊,請參閱
branch.autoSetupMerge
。此選項預設為never
。 branch.sort
-
此變數控制 git-branch[1] 顯示分支時的排序順序。如果未提供
--sort=
<value> 選項,則此變數的值將用作預設值。有關有效值,請參閱 git-for-each-ref[1] 欄位名稱。 branch.
<name>.remote
-
當位於分支 <name> 上時,它告訴
git
fetch
和git
push
從哪個遠端倉庫抓取或推送到哪個遠端倉庫。要推送到的遠端倉庫可以透過remote.pushDefault
(適用於所有分支)來覆蓋。對於當前分支,要推送到的遠端倉庫可以進一步透過branch.
<name>.pushRemote
來覆蓋。如果未配置遠端倉庫,或者你不在任何分支上並且倉庫中定義了多個遠端倉庫,則抓取時預設為origin
,推送時預設為remote.pushDefault
。此外,.
(一個點)是當前本地倉庫(一個點倉庫),請參閱下面branch.
<name>.merge
的最後一條註釋。 branch.
<name>.pushRemote
-
當位於分支 <name> 上時,它會覆蓋用於推送的
branch.
<name>.remote
。它還會覆蓋從分支 <name> 推送時的remote.pushDefault
。當你從一個地方(例如你的上游)拉取並推送到另一個地方(例如你自己的釋出倉庫)時,你可能希望設定remote.pushDefault
來指定所有分支的推送遠端倉庫,並使用此選項來覆蓋特定分支的設定。 branch.
<name>.merge
-
與
branch.
<name>.remote
一起定義給定分支的上游分支。它告訴git
fetch
/git
pull
/git
rebase
要合併哪個分支,並且還可以影響git
push
(請參閱push.default
)。當位於分支 <name> 中時,它告訴git
fetch
要在FETCH_HEAD
中標記合併的預設 refspec。該值被視為 refspec 的遠端部分,並且必須與從branch.
<name>.remote
給定的遠端倉庫抓取的引用匹配。合併資訊由git
pull
(它首先呼叫git
fetch
)用於查詢預設合併分支。如果沒有此選項,git
pull
預設為合併抓取的第一個 refspec。指定多個值以進行章魚合併。如果你希望設定git
pull
以便它從本地倉庫的另一個分支合併到 <name>,你可以將 branch.<name>.merge 指向所需分支,並使用相對路徑設定.
(一個點)作為branch.
<name>.remote
。 branch.
<name>.mergeOptions
-
設定合併到分支 <name> 的預設選項。語法和支援的選項與 git-merge[1] 相同,但目前不支援包含空格字元的選項值。
branch.
<name>.rebase
-
當為 true 時,在執行
git
pull
時,將分支 <name> rebase 到抓取的分支之上,而不是從預設遠端倉庫合併預設分支。有關以非分支特定方式執行此操作,請參閱pull.rebase
。當為
merges
(或簡寫為m
)時,將--rebase-merges
選項傳遞給git
rebase
,以便將本地合併提交包含在 rebase 中(詳情請參閱 git-rebase[1])。當值為
interactive
(或簡寫為i
)時,rebase 以互動模式執行。注意:這是一個可能有危險的操作;除非你理解其影響(詳情請參閱 git-rebase[1]),否則不要使用它。
branch.
<name>.description
-
分支描述,可以使用
git
branch
--edit-description
編輯。分支描述會自動新增到format-patch
封面信或request-pull
摘要中。 - browser.<tool>.cmd
-
指定呼叫指定瀏覽器的命令。指定的命令將在 shell 中評估,URL 作為引數傳遞。(請參閱 git-web--browse[1]。)
- browser.<tool>.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 的命令或功能。 checkout.guess
-
提供
git
checkout
和git
switch
中--guess
或--no-guess
選項的預設值。請參閱 git-switch[1] 和 git-checkout[1]。 checkout.workers
-
更新工作樹時使用的並行工作程序數。預設值為一,即順序執行。如果設定為小於一的值,Git 將使用與可用邏輯核心數相同的工作程序數。此設定和
checkout.thresholdForParallelism
影響所有執行檢出操作的命令。例如:checkout、clone、reset、sparse-checkout 等。注意並行檢出通常為位於 SSD 或透過 NFS 的倉庫提供更好的效能。對於位於旋轉磁碟和/或核心數量較少的機器上的倉庫,預設的順序檢出通常表現更好。倉庫的大小和壓縮級別也可能影響並行版本的效能。 checkout.thresholdForParallelism
-
當並行檢出少量檔案時,子程序生成和程序間通訊的開銷可能大於並行化帶來的收益。此設定允許你定義應嘗試並行檢出的最小檔案數。預設值為 100。
- clean.requireForce
-
一個布林值,用於使 git-clean 拒絕刪除檔案,除非給定 -f 選項。預設為 true。
clone.defaultRemoteName
-
克隆倉庫時建立的遠端倉庫名稱。預設為
origin
。可以透過向 git-clone[1] 傳遞--origin
命令列選項來覆蓋。 clone.rejectShallow
-
如果倉庫是淺克隆,則拒絕克隆;這可以透過在命令列上傳遞
--reject-shallow
選項來覆蓋。請參閱 git-clone[1]。 clone.filterSubmodules
-
如果提供了部分克隆過濾器(請參閱
--filter
在 git-rev-list[1] 中)並且使用了--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
(其他引用)之一。 - 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>
-
為差異著色使用自定義顏色。<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> 分別是用於本地分支、遠端跟蹤分支、標籤、stash 和 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
(顯示無分支警告的顏色,預設為紅色)、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]。當您總是希望在日誌訊息中保留以註釋字元(core.commentChar
,預設為#
)開頭的行時,更改預設值會很有用,在這種情況下,您可以執行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 filters) 的版本。可以是 -1、0、1 或 2。請注意,大於 1 的值可能與尚未理解這些版本的舊版 Git 不相容。在混合版本環境中操作時請謹慎使用。
預設為 -1。
如果為 -1,Git 將使用倉庫中已更改路徑布隆過濾器的版本,如果不存在,則預設為 1。
如果為 0,Git 將不讀取任何布隆過濾器,並在指示寫入時寫入版本 1 布隆過濾器。
如果為 1,Git 將只讀取版本 1 布隆過濾器,並寫入版本 1 布隆過濾器。
如果為 2,Git 將只讀取版本 2 布隆過濾器,並寫入版本 2 布隆過濾器。
更多資訊請參閱 git-commit-graph[1]。
- completion.commands
-
這僅由 git-completion.bash 用於從已完成命令列表中新增或刪除命令。通常只有 porcelain 命令和少數其他選定命令會完成。您可以在此變數中新增更多命令,用空格分隔。在命令前加上 - 將會從現有列表中刪除它。
- core.fileMode
-
告訴 Git 是否應尊重工作樹中檔案的可執行位。
某些檔案系統在檢出標記為可執行的檔案時會丟失可執行位,或者在檢出非可執行檔案時將其可執行位置為開啟。git-clone[1] 或 git-init[1] 會探測檔案系統以檢視它是否正確處理可執行位,並根據需要自動設定此變數。
然而,倉庫可能位於正確處理檔案模式的檔案系統上,並且在建立時此變數被設定為 true,但之後可能會從另一個丟失檔案模式的環境(例如透過 CIFS 掛載匯出 ext4,使用 Git for Windows 或 Eclipse 訪問 Cygwin 建立的倉庫)訪問。在這種情況下,可能需要將此變數設定為 false。請參閱 git-update-index[1]。
預設值為 true(當 core.filemode 未在配置檔案中指定時)。
- core.hideDotFiles
-
(僅限 Windows)如果為 true,則將新建立的以點開頭的目錄和檔案標記為隱藏。如果為 dotGitOnly,則只隱藏
.git/
目錄,而不隱藏其他以點開頭的檔案。預設模式為 dotGitOnly。 - core.ignoreCase
-
內部變數,用於啟用各種變通方法,使 Git 在不區分大小寫的檔案系統(如 APFS、HFS+、FAT、NTFS 等)上更好地工作。例如,如果目錄列表找到 "makefile" 而 Git 期望 "Makefile",Git 將假定它實際上是同一個檔案,並繼續將其記住為 "Makefile"。
預設值為 false,但 git-clone[1] 或 git-init[1] 會在建立倉庫時探測並在適當時將 core.ignoreCase 設定為 true。
Git 依賴於此變數針對您的作業系統和檔案系統的正確配置。修改此值可能會導致意外行為。
- core.precomposeUnicode
-
此選項僅由 Mac OS 上的 Git 實現使用。當 core.precomposeUnicode=true 時,Git 會撤銷 Mac OS 對檔名的 Unicode 分解。這在 Mac OS 和 Linux 或 Windows 之間共享倉庫時很有用。(需要 Git for Windows 1.7.10 或更高版本,或 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
status
)的 Git 命令。內建監視器消除了安裝和維護外部第三方工具的需要。內建檔案系統監視器目前僅在有限的支援平臺上可用。目前,這包括 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(完全掃描)。Git 2.26 之前的版本預設為鉤子協議 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,將使用索引的 split-index 功能。請參閱 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 語言轉義控制字元(例如 \t 表示 TAB,\n 表示 LF,\\ 表示反斜槓)相同的方式使用反斜槓轉義這些字元來引用路徑名中的“不尋常”字元,或者轉義值大於 0x80 的位元組(例如八進位制 \302\265 表示 UTF-8 中的“micro”)。如果此變數設定為 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 協議獲取時,用於執行(作為 command host port)而不是直接連線到遠端伺服器。如果變數值採用“COMMAND for DOMAIN”格式,則該命令僅適用於以指定域名字串結尾的主機名。此變數可以設定多次,並按給定順序匹配;第一個匹配項獲勝。
可以透過
GIT_PROXY_COMMAND
環境變數覆蓋(該變數始終普遍適用,沒有特殊的“for”處理)。特殊字串
none
可以用作代理命令,以指定不對給定域模式使用代理。這對於將防火牆內的伺服器排除在代理使用之外,同時對外部域預設使用通用代理很有用。 - core.sshCommand
-
如果設定了此變數,
git
fetch
和git
push
在需要連線到遠端系統時將使用指定的命令而不是ssh
。該命令與GIT_SSH_COMMAND
環境變數的形式相同,並在設定該環境變數時被覆蓋。 - core.ignoreStat
-
如果為 true,Git 將避免使用 lstat() 呼叫來檢測檔案是否已更改,方法是為那些在索引和工作樹中都已相同更新的跟蹤檔案設定“assume-unchanged”位。
當檔案在 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> 的更新會被記錄到檔案 "
$GIT_DIR/logs/
<ref>" 中,透過附加新的和舊的 SHA-1、日期/時間和更新原因來記錄,但僅在檔案存在時。如果此配置變數設定為true
,則對於分支頭(即refs/heads/
下)、遠端引用(即refs/remotes/
下)、備註引用(即refs/notes/
下)和符號引用HEAD
,會自動建立缺失的 "$GIT_DIR/logs/
<ref>" 檔案。如果設定為always
,則會自動為refs/
下的任何引用建立缺失的 reflog。此資訊可用於確定“兩天前”某個分支的尖端提交是什麼。
在關聯了工作目錄的倉庫中,此值預設為 true;在裸倉庫中,此值預設為 false。
- core.repositoryFormatVersion
-
標識倉庫格式和佈局版本的內部變數。參見 gitrepository-layout[5]。
-
當為 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,表示不在 pack 檔案中的物件的壓縮級別。-1 是 zlib 的預設值。0 表示不壓縮,1..9 是各種速度/大小的權衡,9 是最慢的。如果未設定,則預設為 core.compression。如果 core.compression 也未設定,則預設為 1(最佳速度)。
- core.packedGitWindowSize
-
在單個對映操作中對映到記憶體中的 pack 檔案位元組數。更大的視窗大小可以使您的系統更快地處理少量大型 pack 檔案。較小的視窗大小會因為對作業系統記憶體管理器的呼叫增加而對效能產生負面影響,但在訪問大量大型 pack 檔案時可能會提高效能。
如果在編譯時設定了 NO_MMAP,則預設值為 1 MiB,否則在 32 位平臺上為 32 MiB,在 64 位平臺上為 1 GiB。這對於所有使用者/作業系統來說都應該合理。您可能不需要調整此值。
支援常用的單位字尾 k、m 或 g。
- core.packedGitLimit
-
從 pack 檔案同時對映到記憶體中的最大位元組數。如果 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。
超出配置限制的檔案將
-
以緊縮(deflated)形式儲存在 packfile 中,不嘗試進行增量壓縮。
設定此預設限制主要是為了考慮這種用例。有了它,大多數專案的原始碼和其他文字檔案將進行增量壓縮,但較大的二進位制媒體檔案則不會。
儲存不帶增量壓縮的大檔案可以避免過度的記憶體使用,但會稍微增加磁碟使用量。
-
將被視為標記為“二進位制”檔案(參見 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
目錄中查詢您的鉤子。將其設定為不同的路徑,例如/etc/git/hooks
,Git 將嘗試在該目錄中查詢您的鉤子,例如/etc/git/hooks/pre-receive
,而不是在$GIT_DIR/hooks/pre-receive
中。路徑可以是絕對路徑或相對路徑。相對路徑是相對於執行鉤子的目錄(參見 githooks[5] 的“DESCRIPTION”部分)。
當您希望集中配置 Git 鉤子而不是按每個倉庫配置時,或者作為對已更改預設鉤子的
init.templateDir
的更靈活和集中化的替代方案時,此配置變數非常有用。您還可以透過將
core.hooksPath
設定為/dev/null
來完全停用所有鉤子。這通常只建議專家使用者使用,並且可以按命令使用git
-c
core.hooksPath=/dev/null
... 形式的配置引數來實現。 - 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
將行初始縮排部分中緊跟製表符之前的空格字元視為錯誤(預設啟用)。 -
indent-with-non-tab
將使用空格字元而非等效製表符縮排的行視為錯誤(預設不啟用)。 -
tab-in-indent
將行初始縮排部分中的製表符視為錯誤(預設不啟用)。 -
blank-at-eof
將檔案末尾新增的空行視為錯誤(預設啟用)。 -
trailing-space
是blank-at-eol
和blank-at-eof
的簡寫。 -
cr-at-eol
將行尾的回車符視為行終止符的一部分,即,有了它,如果回車符之前的字元不是空白字元,則trailing-space
不會觸發(預設不啟用)。 -
tabwidth=
<n> 表示一個製表符佔據多少個字元位置;這與indent-with-non-tab
以及 Git 修復tab-in-indent
錯誤時相關。預設製表符寬度為 8。允許的值為 1 到 63。
-
- core.fsync
-
一個逗號分隔的列表,包含倉庫中在建立或修改時應透過 core.fsyncMethod 加固的元件。您可以透過在元件前加上 - 來停用任何元件的加固。未加固的專案在系統非正常關機時可能會丟失。除非您有特殊要求,否則建議您將此選項留空或選擇
committed
、added
或all
中的一個。當遇到此配置時,元件集從平臺預設值開始,停用元件被移除,並新增額外元件。
none
重置狀態,從而忽略平臺預設值。空字串將 fsync 配置重置為平臺預設值。大多數平臺上的預設值等同於
core.fsync=committed,-loose-object
,這具有良好的效能,但在系統非正常關機時,存在丟失近期工作的風險。-
none
清除 fsynced 元件集。 -
loose-object
加固以鬆散物件形式新增到倉庫中的物件。 -
pack
加固以 packfile 形式新增到倉庫中的物件。 -
pack-metadata
加固 packfile 點陣圖和索引。 -
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
啟用一種模式,該模式使用僅寫入重新整理將多個更新暫存在磁盤迴寫快取中,然後在操作結束時對一個虛擬檔案進行一次完整的 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
,以解決 Git for Windows 堅持使用其自己的 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 將讀取提交圖檔案(如果存在)以解析提交的圖結構。預設為 true。有關更多資訊,請參見 git-commit-graph[1]。
- core.useReplaceRefs
-
如果設定為
false
,則行為如同在命令列上給出了--no-replace-objects
選項。有關更多資訊,請參見 git[1] 和 git-replace[1]。 - core.multiPackIndex
-
使用多 pack 索引檔案透過單個索引跟蹤多個 packfile。有關更多資訊,請參見 git-multi-pack-index[1]。預設為 true。
- core.sparseCheckout
-
啟用“稀疏檢出”功能。有關更多資訊,請參見 git-sparse-checkout[1]。
- core.sparseCheckoutCone
-
啟用稀疏檢出功能的“錐形模式”。當稀疏檢出檔案包含有限的模式集時,此模式可提供顯著的效能優勢。透過將此變數設定為 false,可以請求“非錐形模式”以允許指定更靈活的模式。有關更多資訊,請參見 git-sparse-checkout[1]。
- core.abbrev
-
設定物件名稱的縮寫長度。如果未指定或設定為 "auto",則會根據倉庫中 packed 物件的近似數量計算一個合適的值,希望足以使縮寫物件名稱在一段時間內保持唯一。如果設定為 "no",則不進行縮寫,物件名稱以完整長度顯示。最小長度為 4。
- core.maxTreeDepth
-
Git 在遍歷樹時願意遞迴的最大深度(例如,“a/b/cde/f” 的深度為 4)。這是一個故障安全機制,允許 Git 乾淨地中止,通常不需要調整。當 Git 使用 MSVC 編譯時,預設值為 512。否則,預設值為 2048。
- credential.helper
-
指定當需要使用者名稱或密碼憑據時要呼叫的外部助手;該助手可以查詢外部儲存以避擴音示使用者輸入憑據。這通常是憑據助手的名稱,可能帶有引數,但也可能是帶有引數的絕對路徑,或者如果前面帶有
!
,則是 shell 命令。請注意,可以定義多個助手。有關詳細資訊和示例,請參見 gitcredentials[7]。
- credential.interactive
-
預設情況下,當需要新憑據時,Git 和任何配置的憑據助手都會請求使用者輸入。如果儲存的憑據仍然有效,許多這些助手會根據儲存的憑據成功。為了避免 Git 的使用者互動可能性,請將
credential.interactive=false
。一些憑據助手也遵守此選項。 - credential.useHttpPath
-
獲取憑據時,將 http 或 https URL 的“路徑”部分視為重要。預設為 false。有關更多資訊,請參見 gitcredentials[7]。
- credential.sanitizePrompt
-
預設情況下,作為密碼提示一部分顯示的使用者名稱為和主機不允許包含控制字元(它們預設會被 URL 編碼)。將此設定配置為
false
以覆蓋該行為。 - credential.protectProtocol
-
預設情況下,當 Git 與憑據助手通訊時,協議中不允許包含回車符。此設定允許使用者覆蓋此預設值。
- 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
與工作區檔案進行比較時,不將僅統計資訊的更改視為已更改。相反,靜默執行git
update-index
--refresh
以更新工作區中內容與索引中內容匹配的路徑的快取統計資訊。此選項預設為true
。請注意,這僅影響git
diff
Porcelain(高階命令),而不影響git
diff-files
等底層diff
命令。 diff.dirstat
-
一個逗號分隔的
--dirstat
引數列表,指定git-diff[1]及其相關命令的--dirstat
選項的預設行為。這些預設值可以在命令列上被覆蓋(使用--dirstat=
<param>,...
)。當diff.dirstat
未更改時,回退預設值為changes,noncumulative,3
。可用的引數如下:changes
-
透過計算從原始檔中刪除或新增到目標檔案中的行數來計算目錄統計數字。這會忽略檔案中純粹的程式碼移動量。換句話說,檔案中的行重新排列不會像其他更改那樣被計算在內。當未給定引數時,這是預設行為。
lines
-
透過執行常規的基於行的差異分析,並彙總刪除/新增的行數來計算目錄統計數字。(對於二進位制檔案,計算64位元組的塊,因為二進位制檔案沒有自然意義上的行)。這是一種比
changes
行為更昂貴的--dirstat
行為,但它會將檔案內重新排列的行與其他更改一樣計算在內。結果輸出與您從其他--*stat
選項獲得的結果一致。 files
-
透過計算更改檔案的數量來計算目錄統計數字。在目錄統計分析中,每個更改的檔案權重相等。這是計算成本最低的
--dirstat
行為,因為它根本不需要檢視檔案內容。 cumulative
-
子目錄中的更改也計入父目錄。請注意,使用
cumulative
時,報告的百分比總和可能超過100%。預設(非累積)行為可以透過noncumulative
引數指定。 - <limit>
-
一個整數引數,指定一個截止百分比(預設為 3%)。對更改貢獻低於此百分比的目錄不會顯示在輸出中。
示例:以下將計算更改的檔案,同時忽略更改檔案總量少於10%的目錄,並將子目錄計數累積到父目錄中:
files,10,cumulative
。 diff.statNameWidth
-
限制
--stat
輸出中檔名部分的寬度。如果設定,則適用於除format-patch
之外所有生成--stat
輸出的命令。 diff.statGraphWidth
-
限制
--stat
輸出中圖表部分的寬度。如果設定,則適用於除format-patch
之外所有生成--stat
輸出的命令。 diff.context
-
生成差異時顯示<n>行上下文,而非預設的3行。此值會被
-U
選項覆蓋。 diff.interHunkContext
-
顯示差異塊之間的上下文,最多顯示指定行數,從而合併彼此靠近的塊。此值用作
--inter-hunk-context
命令列選項的預設值。 diff.external
-
如果設定此配置變數,則差異生成不使用內部差異機制,而是使用給定命令。可以使用
GIT_EXTERNAL_DIFF
環境變數覆蓋。該命令以git[1]中“Git差異”部分所述的引數呼叫。注意:如果您只想在檔案的子集上使用外部差異程式,您可能希望改用gitattributes[5]。 diff.trustExitCode
-
如果此布林值設定為
true
,則diff.external
命令預計在認為輸入檔案相等時返回退出程式碼0,在認為不同時返回1,就像diff
(1)一樣。如果設定為false
(預設值),則該命令預計無論是否相等都返回退出程式碼0
。任何其他退出程式碼都會導致Git報告致命錯誤。 diff.ignoreSubmodules
-
設定
--ignore-submodules
的預設值。請注意,這僅影響git
diff
Porcelain(高階命令),而不影響git
diff-files
等底層diff
命令。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[1]和git-log[1]等git
diff
Porcelain(高階命令),而不影響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
-
差異驅動程式應該用於識別hunk頭部的正則表示式。也可以使用內建模式。詳見gitattributes[5]。
diff.
<driver>.binary
-
將此選項設定為
true
,使差異驅動程式將檔案視為二進位制檔案。詳見gitattributes[5]。 diff.
<driver>.textconv
-
差異驅動程式應呼叫以生成檔案文字轉換版本的命令。轉換結果用於生成人類可讀的差異。詳見gitattributes[5]。
diff.
<driver>.wordRegex
-
差異驅動程式應該用於在行中分割單詞的正則表示式。詳見gitattributes[5]。
diff.
<driver>.cachetextconv
-
將此選項設定為
true
,使差異驅動程式快取文字轉換輸出。詳見gitattributes[5]。 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
設定對移動的行進行著色時,此選項控制空格的處理模式。有關有效模式的詳細資訊,請參見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
變數。-
araxis
-
bc
-
codecompare
-
deltawalker
-
diffmerge
-
diffuse
-
ecmerge
-
emerge
-
examdiff
-
guiffy
-
gvimdiff
-
kdiff3
-
kompare
-
meld
-
nvimdiff
-
opendiff
-
p4merge
-
smerge
-
tkdiff
-
vimdiff
-
vscode
-
winmerge
-
xxdiff
-
- 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.*
-
除非另有說明,如果
core.repositoryFormatVersion
不是1
,則指定擴充套件是錯誤的。詳見gitrepository-layout[5]。- compatObjectFormat
-
指定要使用的相容雜湊演算法。可接受的值是
sha1
和sha256
。指定的值必須與extensions.objectFormat
的值不同。這允許物件格式與此compatObjectFormat匹配的Git儲存庫之間進行客戶端級別的互操作性。特別是,當完全實現時,可以從物件格式與compatObjectFormat匹配的儲存庫進行推送和拉取。此外,除了使用objectFormat編碼的oid之外,還可以使用compatObjectFormat編碼的oid在本地指定物件。 - noop
-
此擴充套件完全不改變git的行為。它僅用於測試format-1相容性。
由於歷史原因,無論
core.repositoryFormatVersion
設定如何,此擴充套件都受尊重。 - noop-v1
-
此擴充套件完全不改變git的行為。它僅用於測試format-1相容性。
- objectFormat
-
指定要使用的雜湊演算法。可接受的值是
sha1
和sha256
。如果未指定,則假定為sha1
。請注意,此設定僅應由git-init[1]或git-clone[1]設定。嘗試在初始化後更改它將不起作用,並會產生難以診斷的問題。
- partialClone
-
啟用時,表示倉庫是使用部分克隆建立的(或後續執行了部分抓取),並且遠端可能省略了傳送某些不需要的物件。這樣的遠端被稱為“承諾遠端”,它承諾所有此類省略的物件將來都可以從它那裡抓取。
此鍵的值是承諾遠端的名稱。
由於歷史原因,無論
core.repositoryFormatVersion
設定如何,此擴充套件都受尊重。 - preciousObjects
-
如果啟用,表示倉庫中的物件**不得**刪除(例如,透過
git-prune
或git
repack
-d
)。由於歷史原因,無論
core.repositoryFormatVersion
設定如何,此擴充套件都受尊重。 - refStorage
-
指定要使用的引用儲存格式。可接受的值是
-
files
表示帶有 packed-refs 的鬆散檔案。這是預設值。 -
reftable
表示 reftable 格式。此格式是實驗性的,其內部結構可能會更改。
請注意,此設定僅應由git-init[1]或git-clone[1]設定。嘗試在初始化後更改它將不起作用,並會產生難以診斷的問題。
-
- relativeWorktrees
-
如果啟用,表示至少有一個工作樹已使用相對路徑連結。如果工作樹使用
--relative-paths
選項或將worktree.useRelativePaths
配置設定為true
建立或修復,則會自動設定。 - worktreeConfig
-
如果啟用,則工作樹除了從
$GIT_COMMON_DIR/config
檔案載入配置設定外,還將從$GIT_DIR/config.worktree
檔案載入配置設定。請注意,對於主工作樹,$GIT_COMMON_DIR
和$GIT_DIR
是相同的,而其他工作樹的$GIT_DIR
等於$GIT_COMMON_DIR/worktrees/
<id>/
。config.worktree
檔案中的設定將覆蓋任何其他配置檔案中的設定。啟用此擴充套件時,必須小心將某些值從公共配置檔案移動到主工作樹的
config.worktree
檔案(如果存在)中-
core.worktree
必須從$GIT_COMMON_DIR/config
移動到$GIT_COMMON_DIR/config.worktree
。 -
如果
core.bare
為真,則必須將其從$GIT_COMMON_DIR/config
移動到$GIT_COMMON_DIR/config.worktree
。
根據您對每個工作樹可定製的稀疏檢出設定的需求,調整
core.sparseCheckout
和core.sparseCheckoutCone
的位置也可能是有益的。預設情況下,git
sparse-checkout
內建命令會啟用此擴充套件,為每個工作樹分配這些配置值,並使用$GIT_DIR/info/sparse-checkout
檔案獨立指定每個工作樹的稀疏性。詳見git-sparse-checkout[1]。+ 由於歷史原因,無論
core.repositoryFormatVersion
設定如何,此擴充套件都受尊重。 -
- fastimport.unpackLimit
-
如果git-fast-import[1]匯入的物件數量低於此限制,則物件將被解包為鬆散物件檔案。但是,如果匯入的物件數量等於或超過此限制,則包將被儲存為一個包。從fast-import儲存包可以使匯入操作更快完成,尤其是在慢速檔案系統上。如果未設定,則使用
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
中底層的fetch)是否會遞迴抓取到已填充的子模組中。此選項可以設定為布林值或on-demand。設定為布林值時,如果設定為true,則fetch和pull的行為會無條件地遞迴到子模組中;如果設定為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,並且未設定
refs/tags/*:refs/tags/*
引用規範,fetch將自動錶現為提供了該規範進行修剪。這允許同時設定此選項和fetch.prune
以保持與上游引用的一對一對映。另請參閱remote.
<name>.pruneTags
和git-fetch[1]的PRUNING部分。 - fetch.all
-
如果為true,fetch將嘗試更新所有可用的遠端倉庫。此行為可以透過傳遞
--no-all
或顯式指定一個或多個要抓取的遠端倉庫來覆蓋。預設為false。 - fetch.output
-
控制引用更新狀態的列印方式。有效值為
full
和compact
。預設值為full
。詳見git-fetch[1]的OUTPUT部分。 - fetch.negotiationAlgorithm
-
控制在協商伺服器要傳送的 packfile 內容時,如何傳送有關本地倉庫中提交的資訊。設定為“consecutive”以使用遍歷連續提交併檢查每個提交的演算法。設定為“skipping”以使用跳過提交以更快收斂的演算法,但這可能導致 packfile 大於必要的大小;或者設定為“noop”以完全不傳送任何資訊,這幾乎肯定會導致 packfile 大於必要的大小,但會跳過協商步驟。設定為“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
命令從遠端下載 packfile 後寫入提交圖。使用--split
選項,大多數執行會在現有提交圖檔案之上建立一個非常小的提交圖檔案。偶爾,這些檔案會合並,寫入可能需要更長時間。擁有更新的提交圖檔案有助於許多 Git 命令的效能,包括git
merge-base
、git
push
-f
和git
log
--graph
。預設為 false。 - fetch.bundleURI
-
此值儲存一個 URI,用於在從原始 Git 伺服器執行增量抓取之前,從 bundle URI 下載 Git 物件資料。這類似於 git-clone[1] 中
--bundle-uri
選項的行為。如果提供的 bundle URI 包含一個為增量抓取而組織的 bundle 列表,git
clone
--bundle-uri
將設定fetch.bundleURI
值。如果您修改此值並且您的倉庫具有
fetch.bundleCreationToken
值,則在從新的 bundle URI 抓取之前,請刪除該fetch.bundleCreationToken
值。 - fetch.bundleCreationToken
-
當使用
fetch.bundleURI
從使用“creationToken”啟發式方法的 bundle 列表中增量抓取時,此配置值儲存已下載 bundle 的最大creationToken
值。如果公佈的creationToken
不嚴格大於此值,則此值用於阻止將來下載 bundle。建立令牌值由提供特定 bundle 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-編碼”(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
,請使用該字面值。此配置可以多次指定,以允許包含多個備註引用。在這種情況下,其行為類似於傳入多個
--
[no-
]notes
[=
] 選項。也就是說,值為true
將顯示預設備註,值為 <ref> 也將顯示該備註引用的備註,而值為false
將否定先前的配置並且不顯示備註。例如,
[format] notes = true notes = foo notes = false notes = bar
將只顯示來自
refs/notes/bar
的備註。 - format.mboxrd
-
一個布林值,當使用
--stdout
以轉義“^>+From ”行時,它會啟用健壯的“mboxrd”格式。 - 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 發出警告。有關 <msg-id> 支援的值,請參閱 git-fsck[1] 的
Fsck
Messages
部分。 - 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
-
此 Mac OS 特定的選項,如果設定,指定用於在 fsmonitor 守護程序和各種 Git 命令之間進行通訊的 Unix 域套接字建立的目錄。該目錄必須位於本地 Mac OS 檔案系統上。僅當
core.fsmonitor
設定為true
時才生效。 - gc.aggressiveDepth
-
git gc --aggressive 使用的 delta 壓縮演算法中使用的深度引數。預設值為 50,這是在不使用
--aggressive
時--depth
選項的預設值。詳見 git-repack[1] 中
--depth
選項的文件。 - gc.aggressiveWindow
-
git gc --aggressive 使用的 delta 壓縮演算法中使用的視窗大小引數。預設值為 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
時,所有大於此限制的非 cruft 包都將被保留。這與--keep-largest-pack
非常相似,只是所有達到閾值的非 cruft 包都被保留,而不僅僅是最大的包。預設為零。支援常見的單位字尾 k、m 或 g。請注意,如果保留的包數量超過 gc.autoPackLimit,此配置變數將被忽略,除基礎包外的所有包都將被重新打包。在此之後,包的數量應低於 gc.autoPackLimit,並且 gc.bigPackThreshold 應再次生效。
如果
git
repack
順利執行所需的估計記憶體量不可用,並且未設定gc.bigPackThreshold
,則最大的包也將被排除(這相當於使用git
gc
和--keep-largest-pack
)。 - gc.writeCommitGraph
-
如果為 true,則在執行 git-gc[1] 時,gc 將重寫提交圖檔案。當使用
git
gc
--auto
時,如果需要進行清理,提交圖將更新。預設為 true。詳見 git-commit-graph[1]。 - gc.logExpiry
-
如果檔案 gc.log 存在,則
git
gc
--auto
將列印其內容並以狀態零退出,而不是執行,除非該檔案比 gc.logExpiry 舊。預設為“1.day”。有關指定其值的更多方式,請參閱gc.pruneExpire
。 - gc.packRefs
-
在倉庫中執行
git
pack-refs
會使其無法被 Git 1.5.1.2 之前的版本透過 HTTP 等“啞”傳輸克隆。此變數決定 git gc 是否執行git
pack-refs
。可以將其設定為notbare
以在所有非裸倉庫中啟用它,或者將其設定為布林值。預設為true
。 - gc.cruftPacks
-
將不可達物件儲存在 cruft 包中(參見 git-repack[1]),而不是作為鬆散物件。預設為
true
。 - gc.maxCruftSize
-
重新打包時限制新 cruft 包的大小。除了
--max-cruft-size
之外,如果也指定了此選項,則命令列選項優先。詳見 git-repack[1] 的--max-cruft-size
選項。 - gc.pruneExpire
-
當執行 git gc 時,它將呼叫 prune --expire 2.weeks.ago(如果透過
gc.cruftPacks
或--cruft
使用 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”)時,此設定僅適用於匹配該模式的引用。
- gc.reflogExpireUnreachable
- gc.<pattern>.reflogExpireUnreachable
-
git reflog expire 會刪除早於此時間且無法從當前尖端到達的 reflog 條目;預設為 30 天。值“now”會立即使所有條目過期,而“never”會完全禁止過期。中間帶有“<pattern>”(例如“refs/stash”)時,此設定僅適用於匹配該模式的引用。
這些型別的條目通常是使用
git
commit
--amend
或git
rebase
的結果,並且是修訂或變基發生之前的提交。由於這些更改不是當前專案的一部分,大多數使用者會希望它們更快過期,這就是為什麼預設值比gc.reflogExpire
更激進的原因。 - gc.recentObjectsHook
-
在考慮是否刪除物件時(無論是在生成 cruft 包時還是將不可達物件儲存為鬆散物件時),使用 shell 執行指定的命令。將其輸出解釋為 Git 將視為“最近”的物件 ID,無論其年齡如何。透過將其修改時間視為“現在”,輸出中提及的任何物件(及其後代)都將被保留,無論其真實年齡如何。
輸出必須每行包含一個十六進位制物件 ID,且不得包含其他內容。在倉庫中找不到的物件將被忽略。支援多個鉤子,但所有鉤子都必須成功退出,否則操作(無論是生成 cruft 包還是解包不可達物件)將被中止。
- gc.repackFilter
-
重新打包時,使用指定的過濾器將某些物件移動到單獨的 packfile 中。詳見 git-repack[1] 的
--filter=
<filter-spec> 選項。 - gc.repackFilterTo
-
在重新打包和使用過濾器時(參見
gc.repackFilter
),指定的位置將用於建立包含過濾掉的物件的 packfile。警告: 指定的位置應該可訪問,例如使用 Git 備用機制,否則 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
-
將此字串附加到每個提交訊息中。設定為空字串以停用此功能。預設為“透過 git-CVS 模擬器”。
- 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 金鑰的自動化系統在全球位置生成。
只允許簽名提交的儲存庫可以將此檔案儲存在儲存庫本身中,使用相對於工作樹頂層的路徑。這樣,只有持有有效金鑰的提交者才能在金鑰環中新增或更改金鑰。
自 OpenSSH 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] 在執行 fetch 時應修剪遠端跟蹤分支,則為“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 呼叫
Show
History
Context
選單項時,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 子對話方塊中顯示未合併的分支。這對於類似 merge 或 rebase 的工具很有用,但不適用於 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, "false", "off", "no", "show": 顯示建議命令(預設)。
-
1, "true", "on", "yes", "immediate": 立即執行建議命令。
-
大於 1 的正數:在指定的十分之一秒後執行建議命令(0.1 秒)。
-
"never": 不執行或顯示任何建議命令。
-
"prompt": 顯示建議並提示確認是否執行命令。
-
- help.htmlPath
-
指定 HTML 文件所在的路徑。支援檔案系統路徑和 URL。當以 web 格式顯示幫助時,HTML 頁面將以此路徑為字首。這預設為您 Git 安裝的文件路徑。
- http.proxy
-
覆蓋 HTTP 代理,通常使用 http_proxy、https_proxy 和 all_proxy 環境變數配置(詳見
curl
(1
))。除了 curl 理解的語法之外,還可以指定一個只有使用者名稱但沒有密碼的代理字串,在這種情況下,Git 將以獲取其他憑據相同的方式嘗試獲取密碼。更多資訊請參見 gitcredentials[7]。因此語法是 [protocol://][user[:password]@]proxyhost[:port][/path]。這可以在每個遠端倉庫的基礎上被覆蓋;詳見 remote.<name>.proxy無論如何配置,任何代理都必須完全透明,不得以任何方式修改、轉換或緩衝請求或響應。已知不完全透明的代理會導致 Git 出現各種形式的故障。
- http.proxyAuthMethod
-
設定用於對 HTTP 代理進行身份驗證的方法。這僅在配置的代理字串包含使用者名稱部分(即 user@host 或 user@host:port 形式)時生效。這可以在每個遠端倉庫的基礎上被覆蓋;詳見
remote.
<name>.proxyAuthMethod
。兩者都可以透過GIT_HTTP_PROXY_AUTHMETHOD
環境變數覆蓋。可能的值有:-
anyauth
- 自動選擇合適的認證方法。假定代理以 407 狀態碼和至少一個包含支援的認證方法的 Proxy-authenticate 頭部來響應未經認證的請求。這是預設值。 -
basic
- HTTP 基本認證 -
digest
- HTTP Digest 認證;這可以防止密碼以明文形式傳輸到代理。 -
negotiate
- GSS-Negotiate 認證(與curl
(1
) 的 --negotiate 選項比較) -
ntlm
- NTLM 認證(與curl
(1
) 的 --ntlm 選項比較)
-
- http.proxySSLCert
-
儲存用於 HTTPS 代理認證的客戶端證書檔案的路徑名。可以透過
GIT_PROXY_SSL_CERT
環境變數覆蓋。 - http.proxySSLKey
-
儲存用於 HTTPS 代理認證的私鑰檔案的路徑名。可以透過
GIT_PROXY_SSL_KEY
環境變數覆蓋。 - http.proxySSLCertPasswordProtected
-
啟用 Git 對代理 SSL 證書的密碼提示。否則,如果證書或私鑰是加密的,OpenSSL 可能會多次提示使用者。可以透過
GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED
環境變數覆蓋。 - http.proxySSLCAInfo
-
包含證書束的檔案的路徑名,該證書束在使用 HTTPS 代理時應用於驗證代理。可以透過
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
(s)。第二種格式清除該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 進行 fetch 或 push 時是否驗證 SSL 證書。預設為 true。可以透過
GIT_SSL_NO_VERIFY
環境變數覆蓋。 - http.sslCert
-
在使用 HTTPS 進行 fetch 或 push 時包含 SSL 證書的檔案。可以透過
GIT_SSL_CERT
環境變數覆蓋。 - http.sslKey
-
在使用 HTTPS 進行 fetch 或 push 時包含 SSL 私鑰的檔案。可以透過
GIT_SSL_KEY
環境變數覆蓋。 - http.sslCertPasswordProtected
-
啟用 Git 對 SSL 證書的密碼提示。否則,如果證書或私鑰是加密的,OpenSSL 可能會多次提示使用者。可以透過
GIT_SSL_CERT_PASSWORD_PROTECTED
環境變數覆蓋。 - http.sslCAInfo
-
在使用 HTTPS 進行 fetch 或 push 時,包含用於驗證對等方的證書檔案。可以透過
GIT_SSL_CAINFO
環境變數覆蓋。 - http.sslCAPath
-
包含 CA 證書檔案的路徑,在使用 HTTPS 進行 fetch 或 push 時,這些證書用於驗證對等方。可以透過
GIT_SSL_CAPATH
環境變數覆蓋。 - http.sslBackend
-
要使用的 SSL 後端名稱(例如“openssl”或“schannel”)。如果 cURL 缺少在執行時選擇 SSL 後端的功能,則此選項將被忽略。
- http.sslCertType
-
在使用 HTTPS 進行 fetch 或 push 時使用的客戶端證書型別。使用 openssl 或 gnutls 後端時支援“PEM”、“DER”。“P12”在“openssl”、“schannel”、“securetransport”和 gnutls 8.11+ 上受支援。另請參閱 libcurl
CURLOPT_SSLCERTTYPE
。可以透過GIT_SSL_CERT_TYPE
環境變數覆蓋。 - http.sslKeyType
-
在使用 HTTPS 進行 fetch 或 push 時使用的客戶端私鑰型別。(例如“PEM”、“DER”或“ENG”)。僅在使用“openssl”後端時適用。“DER”不與 openssl 一起支援。當設定為“ENG”以透過 PKCS#11 令牌進行認證時特別有用,`sslCert` 選項中包含 PKCS#11 URL。另請參閱 libcurl
CURLOPT_SSLKEYTYPE
。可以透過GIT_SSL_KEY_TYPE
環境變數覆蓋。 - http.schannelCheckRevoke
-
當 http.sslBackend 設定為“schannel”時,用於在 cURL 中強制執行或停用證書吊銷檢查。如果未設定,則預設為
true
。僅當 Git 持續出錯且訊息與檢查證書的吊銷狀態有關時,才需要停用此功能。如果 cURL 缺少在執行時設定相關 SSL 選項的功能,則此選項將被忽略。 - http.schannelUseSSLCAInfo
-
自 cURL v7.60.0 起,Secure Channel 後端可以使用透過
http.sslCAInfo
提供的證書包,但這會覆蓋 Windows 證書儲存。由於預設情況下不希望這樣做,Git 將告訴 cURL 在透過http.sslBackend
配置schannel
後端時,預設不使用該證書包,除非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 會話數(跨槽計數)。它們不會在呼叫 `http_cleanup()` 之前透過 `curl_easy_cleanup()` 結束。如果未定義 `USE_CURL_MULTI`,此值將被限制為 1。預設為 1。
- http.postBuffer
-
智慧 HTTP 傳輸向遠端系統 POST 資料時使用的緩衝區最大位元組數。對於大於此緩衝區大小的請求,將使用 HTTP/1.1 和 `Transfer-Encoding: chunked` 來避免在本地建立大型 pack 檔案。預設值為 1 MiB,這對於大多數請求來說已經足夠。
請注意,提高此限制僅對停用分塊傳輸編碼有效,因此僅應在遠端伺服器或代理僅支援 HTTP/1.0 或不符合 HTTP 標準的情況下使用。一般來說,提高此限制對於大多數推送問題並不是有效的解決方案,但可能會顯著增加記憶體消耗,因為即使是小規模推送也會分配整個緩衝區。
- http.lowSpeedLimit
- http.lowSpeedTime
-
如果 HTTP 傳輸速度(位元組/秒)低於 http.lowSpeedLimit 且持續時間超過 http.lowSpeedTime 秒,則傳輸將被中止。可被
GIT_HTTP_LOW_SPEED_LIMIT
和GIT_HTTP_LOW_SPEED_TIME
環境變數覆蓋。 - http.keepAliveIdle
-
指定在傳送 TCP 保活探測(如果作業系統支援)之前,空閒連線上等待的秒數。如果未設定,則使用 curl 的預設值。可被
GIT_HTTP_KEEPALIVE_IDLE
環境變數覆蓋。 - http.keepAliveInterval
-
指定在 TCP 保活探測之間等待的秒數(如果作業系統支援)。如果未設定,則使用 curl 的預設值。可被
GIT_HTTP_KEEPALIVE_INTERVAL
環境變數覆蓋。 - http.keepAliveCount
-
指定在放棄並終止連線之前傳送的 TCP 保活探測次數(如果作業系統支援)。如果未設定,則使用 curl 的預設值。可被
GIT_HTTP_KEEPALIVE_COUNT
環境變數覆蓋。 - http.noEPSV
-
一個布林值,用於停用 curl 使用 EPSV FTP 命令。這對於一些“簡陋的”FTP 伺服器很有幫助,因為它們不支援 EPSV 模式。可被
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://example.com/
中的https
)。此欄位必須在配置鍵和 URL 之間精確匹配。 -
主機/域名(例如,
https://example.com/
中的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 的路徑欄位精確匹配,或者作為斜槓分隔路徑元素的字首匹配。這意味著路徑為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 將補丁作為純文字、固定格式的電子郵件傳送。預設為
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 時,允許使用者在互動式命令中透過單個按鍵(即無需按回車鍵)提供單字母輸入。目前,這用於 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
-
列印日誌命令顯示的任何提交的引用名稱。如果指定 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
-
增強型 mailmap 檔案的位置。位於倉庫根目錄的預設 mailmap 首先載入,然後是此變數指向的 mailmap 檔案。mailmap 檔案的位置可以在倉庫子目錄中,也可以在倉庫本身之外。參見 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
-
此布林配置選項控制當
git
maintenance
run
未指定--task
選項時,是否執行名稱為 <task> 的維護任務。如果存在--task
選項,則忽略這些配置值。預設情況下,只有maintenance.gc.enabled
為 true。 - maintenance.<task>.schedule
-
此配置選項控制給定 <task> 是否在
git
maintenance
run
--schedule=
<frequency> 命令期間執行。該值必須是“hourly”、“daily”或“weekly”之一。 - maintenance.commit-graph.auto
-
此整數配置選項控制
commit-graph
任務作為git
maintenance
run
--auto
的一部分應該多久執行一次。如果為零,則commit-graph
任務將不會與--auto
選項一起執行。負值將強制任務每次都執行。否則,正值意味著當不在提交圖檔案中的可達提交數量至少為maintenance.commit-graph.auto
的值時,命令應該執行。預設值為 100。 - maintenance.loose-objects.auto
-
此整數配置選項控制
loose-objects
任務作為git
maintenance
run
--auto
的一部分應該多久執行一次。如果為零,則loose-objects
任務將不會與--auto
選項一起執行。負值將強制任務每次都執行。否則,正值意味著當鬆散物件的數量至少為maintenance.loose-objects.auto
的值時,命令應該執行。預設值為 100。 - maintenance.loose-objects.batchSize
-
此整數配置選項控制在
loose-objects
任務期間寫入包檔案中的鬆散物件的最大數量。預設值為五萬。使用值0
表示沒有限制。 - maintenance.incremental-repack.auto
-
此整數配置選項控制
incremental-repack
任務作為git
maintenance
run
--auto
的一部分應該多久執行一次。如果為零,則incremental-repack
任務將不會與--auto
選項一起執行。負值將強制任務每次都執行。否則,正值意味著當不在多包索引中的包檔案數量至少為maintenance.incremental-repack.auto
的值時,命令應該執行。預設值為 10。 - maintenance.reflog-expire.auto
-
此整數配置選項控制
reflog-expire
任務作為git
maintenance
run
--auto
的一部分應該多久執行一次。如果為零,則reflog-expire
任務將不會與--auto
選項一起執行。負值將強制任務每次都執行。否則,正值意味著當“HEAD”reflog 中過期 reflog 條目的數量至少為maintenance.loose-objects.auto
的值時,命令應該執行。預設值為 100。 - maintenance.rerere-gc.auto
-
此整數配置選項控制
rerere-gc
任務作為git
maintenance
run
--auto
的一部分應該多久執行一次。如果為零,則rerere-gc
任務將不會與--auto
選項一起執行。負值將強制任務每次都執行。否則,任何正值都意味著當“rr-cache”目錄存在並且至少有一個條目時,命令就會執行,無論它是否陳舊。這種啟發式方法未來可能會完善。預設值為 1。 - maintenance.worktree-prune.auto
-
此整數配置選項控制
worktree-prune
任務作為git
maintenance
run
--auto
的一部分應該多久執行一次。如果為零,則worktree-prune
任務將不會與--auto
選項一起執行。負值將強制任務每次都執行。否則,正值意味著當可清理的工作樹數量超過該值時,命令應該執行。預設值為 1。 - 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
-
如果呼叫 `merge` 時未帶任何提交引數,則透過使用當前分支的遠端跟蹤分支中儲存的最新觀察值,合併為當前分支配置的上游分支。系統會查閱由
branch.
<current-branch>.remote
指定的遠端倉庫中,由 branch.<current branch>.merge 命名的分支的值,然後透過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
-
透過將匹配整合(integration)分支名稱的 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.renames
為false
,則merge.directoryRenames
將被忽略並被視為false
。預設為conflict
。 merge.renormalize
-
告訴 Git 倉庫中檔案的規範表示隨時間發生了變化(例如,早期的提交記錄文字檔案使用 CRLF 行尾,但最近的提交使用 LF 行尾)。在此類倉庫中,對於每個需要三向內容合併的檔案,Git 可以在執行合併之前將提交中記錄的資料轉換為規範形式,以減少不必要的衝突。有關更多資訊,請參閱 gitattributes[5] 中“使用不同簽入/簽出屬性合併分支”一節。
merge.stat
-
是否在合併結束時列印
ORIG_HEAD
和合並結果之間的差異統計。預設為 true。 merge.autoStash
-
當設定為
true
時,在操作開始前自動建立一個臨時暫存條目,並在操作結束後應用它。這意味著你可以在一個有改動的(dirty)工作樹上執行合併。然而,請謹慎使用:成功合併後的最終暫存應用可能會導致不小的衝突。此選項可以透過 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.
<variant>.layout
-
配置 vimdiff 的 <variant> 的分窗佈局,其中 <variant> 可以是
vimdiff
、nvimdiff
或gvimdiff
中的任意一個。當使用--tool=
<variant>(或如果merge.tool
配置為 <variant> 則不帶--tool
)啟動git
mergetool
時,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”(註解合併策略)一節。此設定可以透過向 git-notes[1] 傳遞
--strategy
選項來覆蓋。 notes.
<name>.mergeStrategy
-
將註解合併到
refs/notes/
<name> 時選擇哪種合併策略。這會覆蓋更通用的notes.mergeStrategy
。有關可用策略的更多資訊,請參閱 git-notes[1] 的“NOTES MERGE STRATEGIES”(註解合併策略)一節。 notes.displayRef
-
在使用
git
log
系列命令顯示提交訊息時,除了由core.notesRef
或GIT_NOTES_REF
設定的預設值外,從哪個引用(或多個引用,如果使用了 glob 或指定了多次)讀取註解。此設定可以透過
GIT_NOTES_DISPLAY_REF
環境變數覆蓋,該變數必須是一個以冒號分隔的引用或 glob 列表。對於不存在的引用將發出警告,但與任何引用不匹配的 glob 將被靜默忽略。
此設定可以透過 git-log[1] 系列命令的
--no-notes
選項,或這些命令接受的--notes=
<ref> 選項停用。core.notesRef
的有效值(可能被GIT_NOTES_REF
覆蓋)也會隱式新增到要顯示的引用列表中。 notes.rewrite.
<command>-
當使用 <command>(目前是
amend
或rebase
)重寫提交時,如果此變數為false
,則 Git 不會將註解從原始提交複製到重寫後的提交。預設為true
。另請參閱下面的notes.rewriteRef
。此設定可以透過
GIT_NOTES_REWRITE_REF
環境變數覆蓋,該變數必須是一個以冒號分隔的引用或 glob 列表。 notes.rewriteMode
-
在重寫期間複製註解時(參見
notes.rewrite.
<command> 選項),確定如果目標提交已有註解該如何處理。必須是overwrite
(覆蓋)、concatenate
(連線)、cat_sort_uniq
或ignore
(忽略)之一。預設為concatenate
。此設定可以透過
GIT_NOTES_REWRITE_MODE
環境變數覆蓋。 notes.rewriteRef
-
在重寫期間複製備註時,指定(完全限定的)要複製備註的引用。可以是一個 glob,在這種情況下,所有匹配引用中的備註都將被複制。您也可以多次指定此配置。
沒有預設值;您必須配置此變數才能啟用備註重寫。將其設定為
refs/notes/commits
以啟用預設提交備註的重寫。可以透過
GIT_NOTES_REWRITE_REF
環境變數覆蓋。有關其格式的進一步描述,請參見上面的notes.rewrite.
<command>。 - pack.window
-
當命令列未指定視窗大小時,git-pack-objects[1] 使用的視窗大小。預設為 10。
- pack.depth
-
當命令列未指定最大深度時,git-pack-objects[1] 使用的最大增量深度。預設為 50。最大值為 4095。
- pack.windowMemory
-
當命令列未指定限制時,git-pack-objects[1] 中每個執行緒用於包視窗記憶體的最大記憶體消耗量。該值可以後綴“k”、“m”或“g”。如果未配置(或顯式設定為 0),則沒有限制。
- pack.compression
-
一個整數,範圍為 -1..9,表示包檔案中物件的壓縮級別。-1 是 zlib 預設值。0 表示不壓縮,1..9 是各種速度/大小的權衡,9 最慢。如果未設定,則預設為 core.compression。如果 core.compression 也未設定,則預設為 -1,即 zlib 預設值,這是“速度和壓縮之間的預設折衷(當前等效於級別 6)”。
請注意,更改壓縮級別不會自動重新壓縮所有現有物件。你可以透過向 git-repack[1] 傳遞 -F 選項來強制重新壓縮。
- pack.allowPackReuse
-
當為 true 或 "single" 且啟用可達性點陣圖時,pack-objects 將嘗試按原樣傳送點陣圖包檔案的部分內容。當為 "multi" 且多包可達性點陣圖可用時,pack-objects 將嘗試傳送 MIDX 中所有包的部分內容。
如果只有一個包點陣圖可用,並且
pack.allowPackReuse
設定為 "multi",則僅重用點陣圖包檔案的部分內容。這可以減少服務 fetch 時的記憶體和 CPU 使用量,但可能會導致傳送略大的包。預設為 true。 - pack.island
-
一個擴充套件的正則表示式,用於配置一組增量島。詳情請參閱 git-pack-objects[1] 中的“DELTA ISLANDS”(增量島)部分。
- pack.islandCore
-
指定一個島嶼名稱,其物件將首先被打包。這會在一個包的前面建立一種偽包,以便指定島嶼中的物件能更快地複製到應提供給請求這些物件的使用者的任何包中。實際上,這意味著指定的島嶼可能對應於倉庫中最常被克隆的內容。另請參閱 git-pack-objects[1] 中的“DELTA ISLANDS”(增量島)部分。
- pack.deltaCacheSize
-
在將增量寫入包之前,git-pack-objects[1] 中用於快取增量的最大記憶體量(以位元組為單位)。此快取用於加速寫入物件階段,因為它在找到所有物件的最佳匹配後無需重新計算最終增量結果。然而,在記憶體緊張的機器上重新打包大型倉庫可能會因此受到嚴重影響,尤其是當此快取導致系統開始交換時。值為 0 表示沒有限制。最小的 1 位元組大小可用於實際停用此快取。預設為 256 MiB。
- pack.deltaCacheLimit
-
git-pack-objects[1] 中快取的增量最大大小。此快取用於加速寫入物件階段,因為它在找到所有物件的最佳匹配後無需重新計算最終增量結果。預設為 1000。最大值為 65535。
- pack.threads
-
指定在搜尋最佳增量匹配時要產生的執行緒數。這要求 git-pack-objects[1] 使用 pthreads 進行編譯,否則此選項將被忽略併發出警告。此設定旨在減少多處理器機器上的打包時間。然而,增量搜尋視窗所需的記憶體量將乘以執行緒數。指定 0 將導致 Git 自動檢測 CPU 數量並相應設定執行緒數。
- pack.indexVersion
-
指定預設的包索引版本。有效值為 1(用於 Git 1.5.2 之前版本使用的舊版包索引)和 2(用於新的包索引,支援大於 4 GB 的包以及對損壞包的重新打包進行適當保護)。版本 2 是預設值。請注意,當相應包大於 2 GB 時,版本 2 將被強制使用,此配置選項將被忽略。
如果你有一箇舊版 Git 無法識別版本 2 的
*.idx
檔案,透過非原生協議(例如“http”)克隆或抓取時,如果同時複製了對方的*.pack
檔案和相應的*.idx
檔案,你可能會得到一個你的舊版 Git 無法訪問的倉庫。然而,如果*.pack
檔案小於 2 GB,你可以對 *.pack 檔案使用 git-index-pack[1] 來重新生成*.idx
檔案。 - pack.packSizeLimit
-
包的最大大小。此設定僅影響重新打包時打包到檔案,即 git:// 協議不受影響。它可以透過 git-repack[1] 的
--max-pack-size
選項覆蓋。達到此限制會導致建立多個包檔案。請注意,此選項很少有用,並且可能導致磁碟總大小更大(因為 Git 不會在包之間儲存增量),以及更差的執行時效能(在多個包中查詢物件比在單個包中慢,並且像可達性點陣圖這樣的最佳化無法處理多個包)。
如果你需要使用較小的包檔案來主動執行 Git(例如,因為你的檔案系統不支援大檔案),此選項可能會有所幫助。但如果你的目標是透過支援有限大小的介質(例如,無法儲存整個倉庫的可移動介質)傳輸包檔案,你最好建立一個單獨的大包檔案,然後使用通用的多卷歸檔工具(例如 Unix
split
)將其分割。允許的最小大小限制為 1 MiB。預設無限制。支援常見的單位字尾 k、m 或 g。
- pack.useBitmaps
-
當為 true 時,Git 在打包到標準輸出時(例如,在 fetch 的伺服器端)將使用包點陣圖(如果可用)。預設為 true。除非你在除錯包點陣圖,否則通常不需要關閉此功能。
- pack.useBitmapBoundaryTraversal
-
當為 true 時,Git 將使用一種實驗性演算法,透過點陣圖計算可達性查詢。它不是為所有被否定(negated)的尖端構建完整的點陣圖然後將它們 OR 起來,而是將具有現有點陣圖的被否定尖端視為加性的(即,如果它們存在,則將其 OR 到結果中,否則忽略它們),而是在邊界處構建點陣圖。
使用此演算法時,Git 可能會由於未開啟屬於某些“不重要”(UNINTERESTING)提交的樹而包含過多物件。這種不精確性與非點陣圖遍歷演算法相符。
在許多情況下,這可以比精確演算法提供更快的速度,特別是在查詢的否定側點陣圖覆蓋率較差時。
- pack.useSparse
-
當為 true 時,如果存在 --revs 選項,Git 將預設在 git pack-objects 中使用 --sparse 選項。此演算法僅遍歷引入新物件的路徑中出現的樹。在計算要傳送小改動的包時,這可以顯著提高效能。然而,如果包含的提交包含某些型別的直接重新命名,則可能會向包檔案新增額外的物件。預設值為
true
。 - pack.preferBitmapTips
-
在選擇哪些提交將接收點陣圖時,優先選擇作為此配置任何值字尾的任何引用尖端的提交,而不是“選擇視窗”中的任何其他提交。
請注意,將此配置設定為
refs/foo
並不意味著一定會選擇refs/foo/bar
和refs/foo/baz
尖端的提交。這是因為點陣圖的提交是從一系列可變長度的視窗中選擇的。如果在視窗中看到任何引用尖端(其是此配置任何值的字尾)上的提交,它將立即獲得比該視窗中任何其他提交更高的優先順序。
- pack.writeBitmaps(已棄用)
-
這是
repack.writeBitmaps
的已棄用同義詞。 - pack.writeBitmapHashCache
-
當為 true 時,Git 將在點陣圖索引中(如果寫入)包含一個“雜湊快取”部分。此快取可用於為 Git 的增量啟發式演算法提供資料,從而可能在點陣圖物件和非點陣圖物件之間產生更好的增量(例如,當在較舊的點陣圖包和自上次 gc 以來已推送的物件之間提供 fetch 服務時)。缺點是它會佔用每個物件 4 位元組的磁碟空間。預設為 true。
在寫入多包可達性點陣圖時,不會計算新的名稱雜湊;相反,寫入新點陣圖時,現有點陣圖中儲存的任何名稱雜湊都會排列到其適當的位置。
- pack.writeBitmapLookupTable
-
當為 true 時,Git 將在點陣圖索引中(如果寫入)包含一個“查詢表”部分。此表用於儘可能延遲載入單個位圖。這對於具有相對較大點陣圖索引的倉庫可能很有利。預設為 false。
- pack.readReverseIndex
-
當為 true 時,Git 將讀取任何可能可用的 .rev 檔案(參見:gitformat-pack[5])。當為 false 時,反向索引將從頭開始生成並存儲在記憶體中。預設為 true。
- pack.writeReverseIndex
-
當為 true 時,Git 將為其寫入的每個新包檔案(除了 git-fast-import[1] 和批次簽入機制之外的所有位置)寫入相應的 .rev 檔案(參見:gitformat-pack[5])。預設為 true。
- pager.<cmd>
-
如果值為布林型別,則在寫入 tty 時,開啟或關閉特定 Git 子命令輸出的分頁功能。否則,使用
pager.
<cmd> 的值指定的 pager 為該子命令開啟分頁。如果在命令列上指定了--paginate
或--no-pager
,則它們優先於此選項。要停用所有命令的分頁,請將core.pager
或GIT_PAGER
設定為cat
。 - pretty.<name>
-
--pretty=
格式字串的別名,如 git-log[1] 中所指定。此處定義的任何別名都可以像內建的漂亮格式一樣使用。例如,執行git
config
pretty.changelog
"format:*
%H
%s"
將使呼叫git
log
--pretty=changelog
等同於執行git
log
"--pretty=format:*
%H
%s"
。請注意,與內建格式同名的別名將被靜默忽略。 - promisor.quiet
-
如果設定為“true”,則在為部分克隆獲取額外物件時假定為
--quiet
。 - promisor.advertise
-
如果設定為“true”,則伺服器將使用“promisor-remote”能力(參見 gitprotocol-v2[5])來宣告其正在使用的 promisor 遠端倉庫(如果它使用了)。預設值為“false”,這意味著不宣告“promisor-remote”能力。
- promisor.acceptFromServer
-
如果設定為“all”,則客戶端將接受伺服器可能使用“promisor-remote”能力宣告的所有 promisor 遠端倉庫。如果設定為“knownName”,客戶端將接受已在客戶端配置且與客戶端宣告的 promisor 遠端倉庫同名的 promisor 遠端倉庫。這不是很安全,但可以在伺服器和客戶端被信任不會更改名稱和 URL 的公司設定中使用。如果設定為“knownUrl”,客戶端將接受在客戶端配置的名稱和 URL 與伺服器宣告的名稱和 URL 相同的 promisor 遠端倉庫。這比“all”或“knownName”更安全,因此如果可能,應使用此選項而不是其他選項。預設值為“none”,這意味著不接受伺服器宣告的任何 promisor 遠端倉庫。透過接受 promisor 遠端倉庫,客戶端同意伺服器可能會在其對客戶端“fetch”和“clone”請求的響應中,省略那些可從該 promisor 遠端倉庫延遲獲取的物件。名稱和 URL 比較區分大小寫。參見 gitprotocol-v2[5]。
- 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 連線(或代理,如果已配置)的匿名 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
-
預設情況下,當合並一個作為當前提交後代的提交時,Git 不會建立額外的合併提交。相反,當前分支的末端會被快進。當設定為
false
時,此變數會告訴 Git 在這種情況下建立額外的合併提交(相當於從命令列提供--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 的行為),並且還希望設定上游跟蹤,則此選項很有用。最有可能受益於此選項的工作流是*簡單*的集中式工作流,其中所有分支都應在遠端上具有相同的名稱。 - push.default
-
定義了在未指定引用(無論是在命令列、配置檔案還是其他地方)時,
git
push
應採取的操作。不同的值適用於特定的工作流;例如,在純粹的集中式工作流中(即拉取源與推送目標相同),upstream
可能正是您想要的。可能的值有:-
nothing
- 除非給定引用,否則不推送任何內容(報錯)。這主要是為了那些希望透過始終明確指定來避免錯誤的人。 -
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 會使推送在伺服器支援的情況下進行簽名,如同將--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”,則等同於在命令列中將
--force-if-includes
作為選項指定給 git-push[1]。在推送時新增--no-force-if-includes
會覆蓋此配置設定。 - push.negotiate
-
如果設定為“true”,則嘗試透過客戶端和伺服器試圖尋找共同提交的多輪協商來減小發送的 packfile 大小。如果為“false”,Git 將僅依靠伺服器的引用宣告來尋找共同提交。
- push.useBitmaps
-
如果設定為“false”,則停用“git push”使用點陣圖,即使
pack.useBitmaps
為“true”也是如此,同時不阻止其他 Git 操作使用點陣圖。預設值為 true。 - rebase.backend
-
變基操作的預設後端。可能的選擇是 apply 或 merge。將來,如果 merge 後端獲得了 apply 後端所有剩餘的功能,此設定可能會變得不再使用。
- rebase.stat
-
是否顯示自上次變基以來上游變化的 diffstat。預設值為 false。
- rebase.autoSquash
-
如果設定為 true,則預設在互動模式下啟用 git-rebase[1] 的
--autosquash
選項。這可以透過--no-autosquash
選項覆蓋。 - rebase.autoStash
-
當設定為 true 時,在操作開始前自動建立一個臨時暫存條目,並在操作結束後應用它。這意味著您可以在有未提交更改的工作樹上執行變基。但是,請謹慎使用:成功變基後的最終暫存應用可能會導致不平凡的衝突。此選項可以透過 git-rebase[1] 的
--no-autostash
和--autostash
選項覆蓋。預設值為 false。 - rebase.updateRefs
-
如果設定為 true,則預設啟用
--update-refs
選項。 - rebase.missingCommitsCheck
-
如果設定為“warn”,如果某些提交被刪除(例如,刪除了一行),git rebase -i 將列印警告,但變基仍將繼續。如果設定為“error”,它將列印前面的警告並停止變基,此時可以使用 git rebase --edit-todo 來糾正錯誤。如果設定為“ignore”,則不執行任何檢查。要刪除提交而不發出警告或錯誤,請在待辦列表中使用
drop
命令。預設值為“ignore”。 - rebase.instructionFormat
-
一個格式字串,如 git-log[1] 中所指定,用於互動式變基期間的待辦事項列表。格式將自動在前面加上提交雜湊值。
- rebase.abbreviateCommands
-
如果設定為 true,
git
rebase
將在待辦列表中使用縮寫命令名稱,結果類似於此:p deadbee The oneline of the commit p fa1afe1 The oneline of the next commit ...
而不是:
pick deadbee The oneline of the commit pick fa1afe1 The oneline of the next commit ...
預設值為 false。
- rebase.rescheduleFailedExec
-
自動重新安排失敗的
exec
命令。這僅在互動模式下(或提供了--exec
選項時)有意義。這與指定--reschedule-failed-exec
選項相同。 - 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
-
從提交主題生成標籤名稱時,將名稱截斷到此長度。預設情況下,名稱會被截斷到略小於
NAME_MAX
(例如,為了允許為相應的鬆散引用寫入.lock
檔案)。 - receive.advertiseAtomic
-
預設情況下,git-receive-pack 會向其客戶端宣告原子推送能力。如果您不想宣告此能力,請將此變數設定為 false。
- receive.advertisePushOptions
-
當設定為 true 時,git-receive-pack 會向其客戶端宣告推送選項能力。預設值為 false。
- receive.autogc
-
預設情況下,git-receive-pack 在接收到 git-push 的資料並更新引用後,會執行“git maintenance run --auto”。您可以透過將此變數設定為 false 來停止它。
- receive.certNonceSeed
-
透過將此變數設定為字串,
git
receive-pack
將接受git
push
--signed
,並透過使用一個由 HMAC 保護的“nonce”(此字串作為金鑰)來驗證它。 - receive.certNonceSlop
-
當
git
push
--signed
傳送的推送證書包含一個由服務同一倉庫的 receive-pack 在指定秒數內頒發的“nonce”時,將證書中找到的“nonce”匯出到鉤子指令碼的GIT_PUSH_CERT_NONCE
環境變數中(而不是 receive-pack 要求傳送方包含的值)。這可能使在pre-receive
和post-receive
鉤子中編寫檢查變得更容易一些。他們無需檢查記錄 nonce 過期秒數的GIT_PUSH_CERT_NONCE_SLOP
環境變數來決定是否接受證書,只需檢查GIT_PUSH_CERT_NONCE_STATUS
是否為OK
。 - receive.fsckObjects
-
如果設定為 true,git-receive-pack 將檢查所有接收到的物件。有關檢查內容,請參閱
transfer.fsckObjects
。預設值為 false。如果未設定,則使用transfer.fsckObjects
的值代替。 - receive.fsck.<msg-id>
-
行為類似於
fsck.
<msg-id>,但由 git-receive-pack[1] 而不是 git-fsck[1] 使用。有關詳細資訊,請參閱fsck.
<msg-id> 文件。 - receive.fsck.skipList
-
行為類似於
fsck.skipList
,但由 git-receive-pack[1] 而不是 git-fsck[1] 使用。有關詳細資訊,請參閱fsck.skipList
文件。 - receive.keepAlive
-
從客戶端接收到資料包後,
receive-pack
在處理資料包時可能不產生任何輸出(如果指定了--quiet
),這會導致某些網路斷開 TCP 連線。設定此選項後,如果receive-pack
在此階段receive.keepAlive
秒內沒有傳輸任何資料,它將傳送一個短的保活資料包。預設值為 5 秒;設定為 0 則完全停用保活。 - receive.unpackLimit
-
如果一次推送中接收到的物件數量低於此限制,則物件將被解包為鬆散物件檔案。但是,如果接收到的物件數量等於或超過此限制,則接收到的 pack 將作為 pack 儲存,並在新增任何缺失的 delta base 之後。儲存來自推送的 pack 可以使推送操作更快完成,尤其是在慢速檔案系統上。如果未設定,則使用
transfer.unpackLimit
的值代替。 - receive.maxInputSize
-
如果傳入 pack 流的大小超過此限制,則 git-receive-pack 將報錯,而不是接受 pack 檔案。如果未設定或設定為 0,則大小不受限制。
- receive.denyDeletes
-
如果設定為 true,git-receive-pack 將拒絕刪除引用的引用更新。使用此選項可防止透過推送刪除此類引用。
- receive.denyDeleteCurrent
-
如果設定為 true,git-receive-pack 將拒絕刪除非裸倉庫當前檢出分支的引用更新。
- receive.denyCurrentBranch
-
如果設定為 true 或“refuse”,git-receive-pack 將拒絕更新非裸倉庫當前檢出分支的引用。這樣的推送是潛在危險的,因為它會導致 HEAD 與索引和工作樹不同步。如果設定為“warn”,則向 stderr 列印此類推送的警告,但允許推送繼續進行。如果設定為 false 或“ignore”,則允許此類推送,不顯示任何訊息。預設值為“refuse”。
另一個選項是“updateInstead”,它在推送到當前分支時會更新工作樹。此選項旨在用於同步工作目錄,當其中一側不易透過互動式 SSH 訪問時(例如,一個即時網站,因此要求工作目錄是乾淨的)。此模式在虛擬機器中開發以測試和修復不同作業系統上的程式碼時也很有用。
預設情況下,“updateInstead”將拒絕推送,如果工作樹或索引與 HEAD 有任何差異,但可以使用
push-to-checkout
鉤子來定製此行為。參見 githooks[5]。 - receive.denyNonFastForwards
-
如果設定為 true,git-receive-pack 將拒絕非快進的引用更新。使用此選項可防止透過推送進行此類更新,即使該推送是強制的。此配置變數在初始化共享倉庫時設定。
- receive.hideRefs
-
此變數與
transfer.hideRefs
相同,但僅適用於receive-pack
(因此影響推送,但不影響拉取)。透過git
push
更新或刪除隱藏引用的嘗試將被拒絕。 - receive.procReceiveRefs
-
這是一個多值變數,定義了用於匹配
receive-pack
中命令的引用字首。匹配此字首的命令將由外部鉤子“proc-receive”執行,而不是內部的execute_commands
函式。如果未定義此變數,“proc-receive”鉤子將永遠不會被使用,所有命令將由內部的execute_commands
函式執行。例如,如果此變數設定為“refs/for”,則推送到“refs/for/master”之類的引用不會建立或更新名為“refs/for/master”的引用,而是可能透過執行“proc-receive”鉤子直接建立或更新拉取請求。
可以在值開頭提供可選修飾符,以篩選特定操作的命令:建立 (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 後端在檔案建立時確定重啟點。每 16 個可能更適合較小的塊大小(4k 或 8k),每 64 個適合較大的塊大小(64k)。
更頻繁的重啟點會降低字首壓縮效率並增加重啟表佔用的空間,兩者都會增加檔案大小。
較不頻繁的重啟點會使字首壓縮更有效,從而減小整體檔案大小,但讀者在二進位制搜尋步驟後遍歷更多記錄時會增加開銷。
每個塊最多支援
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)的遠端,用於該遠端的代理 URL。設定為空字串將停用該遠端的代理。
- remote.<name>.proxyAuthMethod
-
對於需要 curl(http、https 和 ftp)的遠端,用於向正在使用的代理進行身份驗證的方法(可能在
remote.
<name>.proxy
中設定)。參見http.proxyAuthMethod
。 - remote.<name>.fetch
-
git-fetch[1] 的預設“引用規格”集。參見 git-fetch[1]。
- remote.<name>.push
-
git-push[1] 的預設“引用規格”集。參見 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] 的 PRUNING 部分。 - remote.<name>.promisor
-
當設定為 true 時,此遠端將用於抓取 promisor 物件。
- remote.<name>.partialclonefilter
-
從此 promisor 遠端抓取時將應用的過濾器。更改或清除此值只會影響新提交的抓取。要為本地物件資料庫中已存在的提交抓取相關物件,請使用 git-fetch[1] 的
--refetch
選項。 - remote.<name>.serverOption
-
從此遠端抓取時使用的預設伺服器選項集。這些伺服器選項可以透過
--server-option=
命令列引數覆蓋。這是一個多值變數,空值可以在高優先順序配置檔案(例如倉庫中的
.git/config
)中使用,以清除從低優先順序配置檔案(例如$HOME/.gitconfig
)繼承的值。 - remote.<name>.followRemoteHEAD
-
當使用遠端的配置引用規格抓取時,git-fetch[1] 應如何處理對
remotes/
<name>/HEAD
的更新。預設值為 "create",如果遠端上存在但本地不存在remotes/
<name>/HEAD
,則會建立它;這不會觸及已存在的本地引用。將其設定為 "warn" 會在遠端值與本地值不同時列印一條訊息;如果不存在本地引用,則其行為類似於 "create"。 "warn" 的一個變體是 "warn-if-not-$branch",其行為類似於 "warn",但如果遠端上的HEAD
是$branch
,則會靜默。將其設定為 "always" 會靜默地將remotes/
<name>/HEAD
更新為遠端上的值。最後,將其設定為 "never" 將永遠不會更改或建立本地引用。 - remotes.<group>
-
“git remote update <group>” 命令抓取的遠端列表。參見 git-remote[1]。
- repack.useDeltaBaseOffset
-
預設情況下,git-repack[1] 建立使用增量基偏移的包。如果你需要與低於 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 在將所有物件打包到磁碟時(例如,執行
git
repack
-a
時)會寫入點陣圖索引。此索引可以加快為克隆和抓取建立後續包的“計數物件”階段,但會佔用一些磁碟空間並在初始重新打包時花費額外時間。如果建立了多個 packfile,則此設定無效。裸倉庫預設為 true,否則為 false。 - repack.updateServerInfo
-
如果設定為 false,git-repack[1] 將不會執行 git-update-server-info[1]。預設為 true。當設定為 true 時,可以透過 git-repack[1] 的
-n
選項覆蓋。 - repack.cruftWindow
- repack.cruftWindowMemory
- repack.cruftDepth
- repack.cruftThreads
-
當生成一個 cruft pack 且命令列中未給出相應引數時,git-pack-objects[1] 使用的引數。預設值和含義請參見名稱類似的
pack.*
配置變數。 - rerere.autoUpdate
-
當設定為 true 時,
git-rerere
在使用先前記錄的解決方案乾淨地解決衝突後,會用結果內容更新索引。預設為 false。 - rerere.enabled
-
啟用已解決衝突的記錄,以便當再次遇到相同的衝突塊時可以自動解決。預設情況下,git-rerere[1] 是啟用的,如果
$GIT_DIR
下存在rr-cache
目錄,例如,如果倉庫中以前使用過 "rerere"。 - 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 環境變數,並允許訪問其值中記錄的 uid 以及 root 的 id。這是為了便於在安裝過程中執行常見的序列“make && sudo make install”。在 sudo 下執行的 git 程序以 root 身份執行,但 sudo 命令會匯出環境變數以記錄原始使用者的 ID。如果你不喜歡這種行為,並且希望 git 只信任由 root 擁有的倉庫,那麼你可以在呼叫 git 之前從 root 的環境中移除
SUDO_UID
變數。 - sendemail.identity
-
一個配置身份。如果給定,會使 sendemail.<identity> 小節中的值優先於 sendemail 小節中的值。預設身份是
sendemail.identity
的值。 - sendemail.smtpEncryption
-
詳情參見 git-send-email[1]。請注意,此設定不受 identity 機制的約束。
- sendemail.smtpSSLCertPath
-
CA 證書的路徑(可以是目錄或單個檔案)。設定為空字串可停用證書驗證。
- sendemail.<identity>.*
-
下面找到的 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 檔案的位置。預設 mailmap 和
mailmap.file
首先載入。因此,此檔案中的條目優先於預設 mailmap 位置中的條目。參見 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
用於編輯變基指令檔案的文字編輯器。該值在使用時應由 shell 解釋。它可以透過GIT_SEQUENCE_EDITOR
環境變數覆蓋。如果未配置,則使用預設的提交訊息編輯器。 - 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
orputty
- [-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
命令在不帶任何選項的情況下將以補丁形式顯示暫存條目。預設為 false。參見 git-stash[1] 中 show 命令的描述。 - stash.showStat
-
如果設定為 true,
git
stash
show
命令在不帶任何選項的情況下將顯示暫存條目的 diffstat。預設為 true。參見 git-stash[1] 中 show 命令的描述。 - status.relativePaths
-
預設情況下,git-status[1] 顯示相對於當前目錄的路徑。將此變數設定為
false
會顯示相對於倉庫根目錄的路徑(這是 Git v1.5.4 之前的預設行為)。 - status.short
-
設定為 true 可在 git-status[1] 中預設啟用 --short。--no-short 選項優先於此變數。
- status.branch
-
設定為 true 可在 git-status[1] 中預設啟用 --branch。--no-branch 選項優先於此變數。
- status.aheadBehind
-
對於非 porcelain 狀態格式,在 git-status[1] 中,設定為 true 預設啟用
--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 配置中。使用者可以在透過 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
不受支援。 -
branch
僅在啟用submodule.propagateBranches
時才受支援
-
- submodule.propagateBranches
-
[實驗性] 一個布林值,在使用
--recurse-submodules
或submodule.recurse=true
時啟用分支支援。啟用此功能將允許某些命令接受--recurse-submodules
,並且某些已經接受--recurse-submodules
的命令現在將考慮分支。預設為 false。 - submodule.fetchJobs
-
指定同時抓取/克隆的子模組數量。正整數表示最多允許並行抓取這麼多子模組。值為 0 將提供一個合理的預設值。如果未設定,則預設為 1。
- submodule.alternateLocation
-
指定子模組在克隆時如何獲取備用(alternate)物件庫。可能的值是
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 域套接字(在支援它們的平臺上)。套接字型別可以是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,這會停用此檢查。
- trailer.separators
-
此選項指定哪些字元被識別為尾註分隔符。預設情況下,只有 : 被識別為尾註分隔符,但 = 始終在命令列上被接受,以相容其他 Git 命令。
此選項給出的第一個字元將作為預設字元,當此尾註的配置中未指定其他分隔符時使用。
例如,如果此選項的值為 "%=$",則只有使用 <key><sep><value> 格式,且 <sep> 包含 %、= 或 $,然後是空格的行才被視為尾註。並且 % 將是使用的預設分隔符,因此預設情況下,尾註將顯示為:<key>% <value>(鍵和值之間將出現一個百分號和一個空格)。
- trailer.where
-
此選項指定新尾註新增的位置。
它可以是
end
(預設值)、start
、after
或before
。如果為
end
,則每個新尾註將出現在現有尾註的末尾。如果為
start
,則每個新尾註將出現在現有尾註的開頭,而不是末尾。如果為
after
,則每個新尾註將出現在具有相同 <key> 的最後一個尾註之後。如果為
before
,則每個新尾註將出現在具有相同 <key> 的第一個尾註之前。 - trailer.ifexists
-
此選項允許選擇當輸入中已存在至少一個具有相同 <key> 的尾註時將執行的操作。
此選項的有效值是:
addIfDifferentNeighbor
(這是預設值)、addIfDifferent
、add
、replace
或doNothing
。對於
addIfDifferentNeighbor
,只有在將新增新尾註的行上方或下方沒有具有相同(<key>, <value>)對的尾註時,才會新增新尾註。對於
addIfDifferent
,只有在輸入中沒有已經存在的具有相同(<key>, <value>)對的尾註時,才會新增新尾註。對於
add
,即使輸入中已經存在一些具有相同(<key>, <value>)對的尾註,也會新增新尾註。對於
replace
,將刪除一個具有相同 <key> 的現有尾註,並新增新尾註。被刪除的尾註將是距離新尾註新增位置最近的那個(具有相同 <key> 的)。對於
doNothing
,將不執行任何操作;也就是說,如果輸入中已存在具有相同 <key> 的尾註,則不會新增新尾註。 - trailer.ifmissing
-
此選項允許選擇當輸入中尚不存在任何具有相同 <key> 的尾註時將執行的操作。
此選項的有效值是:
add
(這是預設值)和doNothing
。對於
add
,將新增一個新尾註。對於
doNothing
,將不執行任何操作。 - trailer.<keyAlias>.key
-
為 <key> 定義一個 <keyAlias>。<keyAlias> 必須是 <key> 的一個字首(不區分大小寫)。例如,在
git
config
trailer.ack.key
"Acked-by"
中,“Acked-by”是 <key>,而“ack”是 <keyAlias>。此配置允許在命令列上使用“ack”<keyAlias> 呼叫更短的--trailer
"ack:..."
,而不是更長的--trailer
"Acked-by:..."
。在 <key> 的末尾,可以出現一個分隔符,然後是一些空格字元。預設情況下,唯一有效的分隔符是 :,但這可以使用
trailer.separators
配置變數進行更改。如果鍵中存在分隔符,則在新增尾註時,它將覆蓋預設分隔符。
- trailer.<keyAlias>.where
-
此選項接受與 trailer.where 配置變數相同的值,並且它會覆蓋該選項為具有指定 <keyAlias> 的尾註所指定的內容。
- trailer.<keyAlias>.ifexists
-
此選項接受與 trailer.ifexists 配置變數相同的值,並且它會覆蓋該選項為具有指定 <keyAlias> 的尾註所指定的內容。
- trailer.<keyAlias>.ifmissing
-
此選項接受與 trailer.ifmissing 配置變數相同的值,並且它會覆蓋該選項為具有指定 <keyAlias> 的尾註所指定的內容。
- trailer.<keyAlias>.command
-
已棄用,建議使用 trailer.<keyAlias>.cmd。此選項的行為與 trailer.<keyAlias>.cmd 相同,不同之處在於它不將任何內容作為引數傳遞給指定命令。相反,子字串 $ARG 的第一次出現會被替換為將作為引數傳遞的 <value>。
請注意,使用者命令中的 $ARG 只會被替換一次,並且原始的 $ARG 替換方式不安全。
當為同一個 <keyAlias> 同時給定 trailer.<keyAlias>.cmd 和 trailer.<keyAlias>.command 時,將使用 trailer.<keyAlias>.cmd,而 trailer.<keyAlias>.command 將被忽略。
- trailer.<keyAlias>.cmd
-
此選項可用於指定一個 shell 命令,該命令將被呼叫一次以自動新增具有指定 <keyAlias> 的尾註,然後每次指定 --trailer <keyAlias>=<value> 引數時都會再次呼叫,以修改此選項將生成的尾註的 <value>。
當指定命令首次被呼叫以新增具有指定 <keyAlias> 的尾註時,其行為如同在 "git interpret-trailers" 命令的開頭添加了一個特殊的 --trailer <keyAlias>=<value> 引數,其中 <value> 被認為是該命令的標準輸出,並去除任何前導和尾隨的空白字元。
如果在命令列上也傳遞了某些 --trailer <keyAlias>=<value> 引數,則該命令將針對這些具有相同 <keyAlias> 的引數中的每一個再次呼叫一次。並且這些引數的 <value> 部分(如果有)將作為其第一個引數傳遞給該命令。這樣,該命令就可以根據 --trailer <keyAlias>=<value> 引數中傳遞的 <value> 計算出新的 <value>。
- 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。設定後,當遇到格式錯誤的物件或指向不存在物件的連結時,抓取 (fetch) 或接收 (receive) 將中止。此外,還會檢查各種其他問題,包括遺留問題(參閱
fsck.
<msg-id>),以及潛在的安全問題,例如.GIT
目錄的存在或惡意.gitmodules
檔案(詳情請參閱 v2.2.1 和 v2.17.1 的發行說明)。未來的版本中可能會新增其他健全性檢查和安全檢查。在接收端,fsckObjects 失敗將使這些物件無法訪問,請參閱 git-receive-pack[1] 中的“QUARANTINE ENVIRONMENT”。在抓取端,格式錯誤的物件將改為在倉庫中保持未引用狀態。
由於
fetch.fsckObjects
實現的非隔離性質,不能像receive.fsckObjects
那樣依賴它來保持物件儲存的乾淨。由於物件在解包時會寫入物件儲存,因此即使“抓取”失敗,也可能引入惡意物件,然後隨後的“抓取”成功,因為只檢查新的傳入物件,而不檢查已經寫入物件儲存的物件。不應依賴這種行為差異。將來,此類物件也可能針對“抓取”進行隔離。
目前,多疑者需要找到某種方式來模擬隔離環境,如果他們想要與“推送”相同的保護。例如,在內部映象的情況下,分兩步進行映象:一步抓取不受信任的物件,然後進行第二次“推送”(這將使用隔離)到另一個內部倉庫,並讓內部客戶端使用這個被推送到的倉庫,或者禁止內部抓取,只在完整的“fsck”執行後(且在此期間沒有發生新的抓取)才允許它們。
- transfer.hideRefs
-
字串,
receive-pack
和upload-pack
用來決定從其初始廣告中省略哪些引用。使用多個定義來指定多個字首字串。在此變數值中列出的層次結構下的引用將被排除,並在響應git
push
或git
fetch
時被隱藏。有關此配置的程式特定版本,請參閱receive.hideRefs
和uploadpack.hideRefs
。您也可以在引用名稱前加上
!
來否定該條目,明確地公開它,即使之前的條目已將其標記為隱藏。如果您有多個 hideRefs 值,則後面的條目會覆蓋前面的條目(更具體的配置檔案中的條目會覆蓋不太具體的配置檔案中的條目)。如果正在使用名稱空間,則在將每個引用與
transfer.hiderefs
模式匹配之前,會從引用中剝離名稱空間字首。為了在剝離之前匹配引用,請在引用名稱前新增^
。如果您同時使用!
和^
,則必須首先指定!
。例如,如果在
transfer.hideRefs
中指定了refs/heads/master
並且當前名稱空間是foo
,那麼refs/namespaces/foo/refs/heads/master
將從廣告中省略。如果設定了uploadpack.allowRefInWant
,則upload-pack
將在協議 v2fetch
命令中處理want-ref
refs/heads/master
,就像refs/namespaces/foo/refs/heads/master
不存在一樣。receive-pack
則仍然會廣告引用指向的物件 ID,而不會提及其名稱(即所謂的“.have”行)。即使您隱藏了引用,客戶端仍可能透過 gitnamespaces[7] 手冊頁“SECURITY”部分中描述的技術竊取目標物件;最好將私有資料儲存在單獨的倉庫中。
- 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
請求任何樹,無論其是否可從引用尖端訪問。詳情請參閱 git-upload-archive[1] 的“SECURITY”部分中的討論。預設為false
。 - uploadpack.hideRefs
-
此變數與
transfer.hideRefs
相同,但僅適用於upload-pack
(因此隻影響抓取,不影響推送)。嘗試透過git
fetch
抓取隱藏引用將失敗。另請參閱uploadpack.allowTipSHA1InWant
。 - uploadpack.allowTipSHA1InWant
-
當
uploadpack.hideRefs
生效時,允許upload-pack
接受請求隱藏引用尖端物件的 fetch 請求(預設情況下,此類請求會被拒絕)。另請參閱uploadpack.hideRefs
。即使此項為 false,客戶端也可能透過 gitnamespaces[7] 手冊頁“SECURITY”部分描述的技術竊取物件;最好將私有資料儲存在單獨的倉庫中。 - uploadpack.allowReachableSHA1InWant
-
允許
upload-pack
接受請求可從任何引用尖端訪問的物件的 fetch 請求。但是,請注意計算物件可達性是計算開銷大的操作。預設為false
。即使此項為 false,客戶端也可能透過 gitnamespaces[7] 手冊頁“SECURITY”部分描述的技術竊取物件;最好將私有資料儲存在單獨的倉庫中。 - uploadpack.allowAnySHA1InWant
-
允許
upload-pack
接受請求任何物件的 fetch 請求。它隱含了uploadpack.allowTipSHA1InWant
和uploadpack.allowReachableSHA1InWant
。如果設定為true
,它將同時啟用它們;如果設定為false
,它將同時停用它們。預設情況下未設定。 - uploadpack.keepAlive
-
當
upload-pack
啟動pack-objects
後,在pack-objects
準備 pack 檔案期間可能會有一段安靜時間。通常它會輸出進度資訊,但如果 fetch 操作使用了--quiet
,pack-objects
在 pack 資料開始之前將完全不輸出任何內容。某些客戶端和網路可能會認為伺服器已掛起並放棄。設定此選項會指示upload-pack
每隔uploadpack.keepAlive
秒傳送一個空的保活包。將此選項設定為 0 會完全停用保活包。預設值為 5 秒。 - uploadpack.packObjectsHook
-
如果設定了此選項,當
upload-pack
為客戶端執行git
pack-objects
來建立 packfile 檔案時,它將轉而執行此 shell 命令。pack-objects
命令及其原本會執行的引數(包括開頭的git
pack-objects
)將附加到 shell 命令後。鉤子的 stdin 和 stdout 將被視為pack-objects
本身被執行。即,upload-pack
會將 intended forpack-objects
的輸入提供給鉤子,並期望在 stdout 上收到一個完整的 packfile 檔案。請注意,此配置變數僅在受保護的配置中指定時才有效(參見 SCOPES)。這是防止從不受信任的倉庫拉取(fetch)的安全措施。
- 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
功能。此功能旨在方便負載均衡伺服器,這些伺服器可能由於複製延遲而無法擁有對其引用所指向的 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 作為推送目標。在某些站點提供大量倉庫,並以多種訪問方法提供服務,其中一些方法不允許推送的情況下,此功能允許人們指定一個只拉取(pull-only)的 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
形式通常指某種形式的個人名稱。有關這些設定的更多資訊以及如果您正在尋找身份驗證憑據,請參閱 git-commit[1] 和 git[1] 的環境變數部分,以及credential.username
選項。 - 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
會嘗試查詢名稱唯一匹配新分支名稱的遠端跟蹤分支。如果存在這樣的分支,它將被檢出並設定為新分支的“upstream”。如果找不到這樣的匹配項,它將回退到從當前 HEAD 建立新分支。 - worktree.useRelativePaths
-
使用相對路徑(當為“true”)或絕對路徑(當為“false”)連結工作樹。這對於倉庫和工作樹可能在不同位置或環境之間移動的設定特別有用。預設為“false”。
請注意,將
worktree.useRelativePaths
設定為“true”意味著啟用extension.relativeWorktrees
配置(參見 git-config[1]),因此它與舊版本的 Git 不相容。
BUG
當使用已廢棄的 [section.subsection
] 語法時,如果子節中至少包含一個大寫字母,更改值將導致新增一個多行鍵而不是更改。例如,當配置如下所示時:
[section.subsection] key = value1
然後執行 git
config
section.Subsection.key
value2
將導致:
[section.subsection] key = value1 key = value2