設定與組態
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢查與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
- gitattributes
- 命令列介面規範
- Git 日常使用
- 常見問題 (FAQ)
- 詞彙表
- 掛鉤 (Hooks)
- gitignore
- gitmodules
- 修訂版本 (Revisions)
- 子模組
- 教學
- 工作流程
- 所有指南...
管理
底層命令 (Plumbing Commands)
-
2.54.0
2026-04-20
-
2.53.0
2026-02-02
-
2.52.0
2025-11-17
-
2.51.2
2025-10-27
-
2.51.1
2025-10-15
-
2.51.0
2025-08-18
- 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=<pattern>] [--fixed-value] [--default=<default>] [--url=<url>] <name> git config set [<file-option>] [--type=<type>] [--all] [--value=<pattern>] [--fixed-value] <name> <value> git config unset [<file-option>] [--all] [--value=<pattern>] [--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=<模式>(除非給定了 --fixed-value 選項,否則這是一個擴展正則表達式)。只有符合模式的現有值會被更新或取消設置。如果您想處理與模式< 不 符合的行,只需在前面加上一個感嘆號(另請參閱 範例),但請注意這僅在未啟用 --fixed-value 選項時才有效。
--type=<類型> 選項指示 git config 確保傳入和傳出的值在給定的 <類型> 下是可規範化的。如果未給出 --type=<類型>,則不會執行規範化。呼叫者可以使用 --no-type 取消設置現有的 --type 指定符。
讀取時,預設會從系統、全域和存儲庫本地配置文件中讀取值,並且可以使用 --system、--global、--local、--worktree 和 --file <文件名> 選項來告訴命令僅從該位置讀取(參閱 文件)。
寫入時,預設會將新值寫入存儲庫本地配置文件,並且可以使用 --system、--global、--worktree、--file <文件名> 選項來告訴命令寫入該位置(您可以輸入 --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<配置文件>。
選項 (OPTIONS)
- --replace-all
-
預設行為是最多替換一行。此選項會替換所有與鍵匹配的行(可選擇配合
--value=<模式>)。 - --append
-
向選項添加新行而不更改任何現有值。這與在
set中提供 --value=^$ 相同。 - --comment <訊息>
-
在新增或修改行的末尾追加註釋。
如果 <訊息> 以一個或多個空格開頭,後跟 "",則按原樣使用。如果它以 "" 開頭,則在使用前會加上一個空格。否則,它會被加上字串 " # "(空格、井號、空格)。產生的字串會緊接在變量定義的值之後。<訊息> 不得包含換行字符(不允許使用多行註釋)。
- --all
-
配合
get使用時,返回多值鍵的所有值。 - --regexp
-
配合
get使用時,將名稱解釋為正則表達式。正則表達式匹配目前區分大小寫,並針對鍵的規範化版本進行匹配(其中區段名稱和變量名稱為小寫,但子區段名稱不是)。 - --url=<URL>
-
當給出兩部分 <名稱> 作為 <區段>.<鍵> 時,會返回與給定 URL 最匹配的 <區段>.
.<鍵> 的值(如果沒有這樣的鍵,則會回退使用 <區段>.<鍵> 的值)。當僅給出 <區段> 作為名稱時,則針對該區段中的所有鍵執行此操作並將其列出。如果找不到值,則返回錯誤代碼 1。 - --global
-
對於寫入選項:寫入全域
~/.gitconfig文件,而不是存儲庫的.git/config;如果存在$XDG_CONFIG_HOME/git/config且~/.gitconfig不存在,則寫入該文件。對於讀取選項:僅從全域
~/.gitconfig和$XDG_CONFIG_HOME/git/config讀取,而不是從所有可用文件中讀取。另請參閱 文件。
- --system
-
對於寫入選項:寫入系統範圍的
$(prefix)/etc/gitconfig,而不是存儲庫的.git/config。對於讀取選項:僅從系統範圍的
$(prefix)/etc/gitconfig讀取,而不是從所有可用文件中讀取。另請參閱 文件。
- --local
-
對於寫入選項:寫入存儲庫的
.git/config文件。這是預設行為。對於讀取選項:僅從存儲庫的
.git/config讀取,而不是從所有可用文件中讀取。另請參閱 文件。
- --worktree
-
與
--local類似,不同之處在於如果啟用了extensions.worktreeConfig,則會從$GIT_DIR/config.worktree讀取或寫入。否則,它與--local相同。請注意,$GIT_DIR對於主工作樹等於$GIT_COMMON_DIR,但對於其他工作樹則為$GIT_DIR/worktrees/<id>/形式。請參閱 git-worktree[1] 以了解如何啟用extensions.worktreeConfig。 - -f <配置文件>
- --file <配置文件>
-
對於寫入選項:寫入指定文件,而不是存儲庫的
.git/config。對於讀取選項:僅從指定文件讀取,而不是從所有可用文件中讀取。
另請參閱 文件。
- --blob <blob>
-
與
--file類似,但使用給定的 blob 而不是文件。例如,您可以使用 master:.gitmodules 從 master 分支中的 .gitmodules 文件讀取值。有關如何表示 blob 名稱的更完整列表,請參閱 gitrevisions[7] 中的“指定修訂版本”一節。 --value=<模式>--no-value-
配合
get、set和unset使用時,僅與 <模式> 匹配。除非給出了--fixed-value,否則模式為擴展正則表達式。使用
--no-value來取消設置 <模式>。 - --fixed-value
-
與
--value=<模式> 一起使用時,將 <模式> 視為確切字串而不是正則表達式。這將限制匹配的名稱/值對,僅限於值與 <模式> 完全相等的那些。 - --type <類型>
-
git config 將確保任何輸入或輸出在給定的類型限制下有效,並將傳出值規範化為 <類型> 的規範形式。
有效的 <類型> 包括
-
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展開為指定用戶的主目錄來規範化。此指定符在設置值時沒有影響(但您可以使用命令列的gitconfigsection.variable~/讓您的 shell 執行展開)。 -
expiry-date: 通過將固定或相對日期字串轉換為時間戳來規範化。此指定符在設置值時沒有影響。
-
color: 獲取值時,通過轉換為 ANSI 顏色轉義序列來規範化。設置值時,會執行健全性檢查以確保給定值可規範化為 ANSI 顏色,但會按原樣寫入。
如果命令處於
list模式,則--type<類型> 參數將應用於每個列出的配置值。如果該值無法以該格式成功解析,則將其從列表中省略。
-
- --bool
- --int
- --bool-or-int
- --path
- --expiry-date
-
用於選擇類型指定符的歷史選項。請改用
--type(見上文)。 - --no-type
-
取消設置先前設置的類型指定符(如果先前已設置)。此選項請求 git config 不規範化檢索到的變量。
--no-type在沒有--type=<類型> 或--<類型> 的情況下沒有影響。 - -z
- --null
-
對於所有輸出值和/或鍵的選項,始終以空字符(而不是換行符)結束值。改用換行符作為鍵和值之間的分隔符。這允許安全地解析輸出,而不會因包含換行符的值而感到困惑。
- --name-only
-
僅輸出
list或get的配置變量名稱。 --show-names--no-show-names-
使用
get時,除值外還顯示配置鍵。預設為--no-show-names,除非給出了--url且 <名称> 中沒有子區段。 - --show-origin
-
使用來源類型(文件、標準輸入、blob、命令列)和實際來源(配置文件路徑、引用或 blob ID(如果適用))來增強所有查詢配置選項的輸出。
- --show-scope
-
與
--show-origin類似,它會使用該值的作用域(工作樹、本地、全域、系統、命令)來增強所有查詢配置選項的輸出。 - --get-colorbool <名稱> [<stdout-is-tty>]
-
查找 <名稱>(例如
color.diff)的顏色設置並輸出 "true" 或 "false"。 <stdout-is-tty> 應為 "true" 或 "false",並在配置說明為 "auto" 時會納入考慮。如果缺少 <stdout-is-tty>,則檢查命令本身的標準輸出,如果應使用顏色則以狀態 0 退出,否則以狀態 1 退出。當名稱的顏色設置未定義時,命令將使用color.ui作為回退。 - --includes
- --no-includes
-
查找值時遵守配置文件中的
include.*指令。指定特定文件(例如使用--file、--global等)時預設為off,在搜尋所有配置文件時預設為on。 - --default <值>
-
使用
get且未找到請求的變量時,表現得如同該值已分配給該變量一樣。
已棄用的模式
以下模式已被棄用,轉而使用子命令。建議遷移到新的語法。
- git config <名稱>
-
由
gitconfigget<名稱> 取代。 - git config <名稱> <值> [<值-模式>]
-
由
gitconfigset[--value=<模式>] <名稱> <值> 取代。 - -l
- --list
-
由
gitconfiglist取代。 - --get <名稱> [<值-模式>]
-
由
gitconfigget[--value=<模式>] <名稱> 取代。 - --get-all <名稱> [<值-模式>]
-
由
gitconfigget[--value=<模式>]--all<名稱> 取代。 - --get-regexp <名稱-正則表達式>
-
由
gitconfigget--all--show-names--regexp<名稱-正則表達式> 取代。 - --get-urlmatch <名稱> <URL>
-
由
gitconfigget--url=<URL> <名稱> 取代。 - --get-color <名稱> [<預設值>]
-
由
gitconfigget--type=color[--default=<預設值>] <名稱> 取代。 - --add <名稱> <值>
-
由
gitconfigset--append<名稱> <值> 取代。 - --unset <名稱> [<值-模式>]
-
由
gitconfigunset[--value=<模式>] <名稱> 取代。 - --unset-all <名稱> [<值-模式>]
-
由
gitconfigunset[--value=<模式>]--all<名稱> 取代。 - --rename-section <舊名稱> <新名稱>
-
由
gitconfigrename-section<舊名稱> <新名稱> 取代。 - --remove-section <名稱>
-
由
gitconfigremove-section<名稱> 取代。 - -e
- --edit
-
由
gitconfigedit取代。
文件 (FILES)
預設情況下,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 的配置作用域來限制讀取或寫入哪些配置源。更多資訊,請參閱上文的 選項。
作用域 (SCOPES)
每個配置源都屬於一個配置作用域。作用域包括
- 系統 (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選項
除了 命令 之外,每個作用域都對應一個命令列選項:--system、--global、--local、--worktree。
讀取選項時,指定作用域將僅讀取該作用域內的文件中的選項。寫入選項時,指定作用域將寫入該作用域內的文件(而不是存儲庫特定的配置文件)。完整說明請參閱上文的 選項。
大多數配置選項無論定義在什麼作用域中都會被遵守,但有些選項僅在特定作用域中被遵守。有關詳細資訊,請參閱相應選項的文檔。
環境變量 (ENVIRONMENT)
另請參閱 文件。
- 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
-
如果未向
gitconfig提供--file選項,則使用GIT_CONFIG給出的文件,如同它通過--file提供一樣。此變量對其他 Git 命令沒有影響,主要用於歷史兼容性;通常沒有理由使用它而不是--file選項。
範例 (EXAMPLES)
假設 .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
如果您想刪除 multivar 的條目(如上面的 core.gitproxy),您必須提供一個匹配確切一行值的正則表達式。
要查詢給定鍵的值,請執行
% git config get core.filemode
或者,要查詢 multivar
% git config get --value="for kernel.org$" core.gitproxy
如果您想了解 multivar 的所有值,請執行
% 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] 的“配置文件”一節)文件用於存儲該存儲庫的配置,而 $HOME/.gitconfig 用於存儲每用戶配置作為 .git/config 文件的回退值。文件 /etc/gitconfig 可用於存儲系統範圍的預設配置。
配置變量由 Git 管道命令和 porcelain 命令使用。變量被分為多個區段,其中變量本身的完全限定名稱是最後一個點分隔部分,區段名稱是最後一個點之前的所有部分。變量名稱不區分大小寫,僅允許字母數字字符和 -,並且必須以字母開頭。某些變量可能出現多次;我們稱之為多值變量。
語法
語法相當靈活且寬鬆。在這種語境下,空白字符(即空格 (SP) 和水平製表符 (HT))大多被忽略。# 和 ; 字符標記註釋直到行尾。空行被忽略。
文件由區段和變量組成。區段以方括號中的區段名稱開始,並持續到下一個區段開始。區段名稱不區分大小寫。區段名稱中僅允許使用字母數字字符、- 和 .。每個變量必須屬於某個區段,這意味著在第一次設置變量之前必須有一個區段頭。
區段可以進一步劃分為子區段。要開始一個子區段,請將其名稱放在雙引號中,並在區段頭中與區段名稱用空格分隔,如下例所示
[section "subsection"]
子區段名稱區分大小寫,可以包含除換行符和空字節以外的任何字符。雙引號 " 和反斜線可以通過分別轉義為 \" 和 \\ 來包含。讀取時會丟棄其他字符前的反斜線;例如,\t 被讀為 t,\0 被讀為 0。區段頭不能跨越多行。變量可以直接屬於某個區段或給定的子區段。如果您有 [區段 "子區段"],則可以有 [區段],但這不是必需的。
還有一個已棄用的 [區段.子區段] 語法。使用此語法時,子區段名稱會轉換為小寫並進行區分大小寫的比較。這些子區段名稱遵循與區段名稱相同的限制。
所有其他行(以及區段頭之後該行的其餘部分)被識別為設置變量,格式為 名稱 = 值(或者僅僅是 名稱,這是一種表示該變量為布爾值 "true" 的速記)。變量名稱不區分大小寫,僅允許使用字母數字字符和 -,並且必須以字母開頭。
名稱、= 和 值 周圍的空白字符將被丟棄。值 內部的空白字符將按原樣保留。以 # 或 ; 開頭並延伸至行尾的註釋將被丟棄。定義值的行可以通過以反斜線 (\) 結束來延續到下一行;反斜線和行尾字符將被丟棄。
如果 值 需要包含開頭或結尾的空白字符,則必須將其括在雙引號 (") 中。在雙引號內,雙引號 (") 和反斜線 (\) 字符必須進行轉義:使用 \" 表示 ",使用 \\ 表示 \。
識別以下轉義序列(除了 \" 和 \\):\n 表示換行字符 (NL),\t 表示水平製表符 (HT, TAB),以及 \b 表示退格鍵 (BS)。其他字符轉義序列(包括八進位轉義序列)是無效的。
包含 (Includes)
include 和 includeIf 區段允許您包含來自另一個來源的配置指令。這些區段的行為完全相同,不同之處在於如果 includeIf 區段的條件未評估為 true,則它們可能會被忽略;請參閱下文的“條件包含”。
您可以通過將特殊的 include.path(或 includeIf.*.path)變量設置為要包含的文件名稱來包含另一個配置文件。該變量採用路徑名作為其值,並受波浪號擴展約束。這些變量可以多次給出。
包含的文件的內容會立即插入,如同它們在包含指令的位置被發現一樣。如果變量的值是相對路徑,則該路徑被認為相對於發現包含指令的配置文件。範例請參見下文。
條件包含 (Conditional includes)
您可以通過將 includeIf.<條件>.path 變量設置為要包含的文件名稱來有條件地包含另一個配置文件。
條件以關鍵字開始,後跟冒號和一些數據,其格式和含義取決於關鍵字。支持的關鍵字為
gitdir-
關鍵字
gitdir和冒號後面的數據用作 glob 模式。如果 .git 目錄的位置匹配該模式,則滿足包含條件。.git 位置可能是自動發現的,或者來自
$GIT_DIR環境變量。如果存儲庫是通過 .git 文件(例如來自子模組或連結的工作樹)自動發現的,則 .git 位置將是 .git 目錄的最終位置,而不是 .git 文件所在的位置。該模式可以包含標準 glob 通配符以及兩個額外的通配符
**/和/**,它們可以匹配多個路徑組件。詳情請參閱 gitignore[5]。為了方便-
如果模式以
~/開頭,~將被環境變量HOME的內容替換。 -
如果模式以
./開頭,它將被包含當前配置文件的目錄替換。 -
如果模式不以
~/、./或/開頭,**/將被自動添加到開頭。例如,模式foo/bar變為**/foo/bar,並將匹配/any/path/to/foo/bar。 -
如果模式以
/結尾,**將被自動添加。例如,模式foo/變為foo/**。換句話說,它匹配 "foo" 及其內部所有內容,並進行遞歸。
-
gitdir/i-
這與
gitdir相同,不同之處在於匹配是不區分大小寫的(例如在不區分大小寫的文件系統上) onbranch-
關鍵字
onbranch和冒號後面的數據被視為帶有標準 glob 通配符的模式,以及兩個額外的通配符**/和/**,它們可以匹配多個路徑組件。如果我們位於一個工作樹中,且當前簽出的分支名稱匹配該模式,則滿足包含條件。如果模式以
/結尾,**將被自動添加。例如,模式foo/變為foo/**。換句話說,它匹配所有以foo/開頭的分支。如果您的分支是層次化組織的,並且您希望將配置應用於該層次結構中的所有分支,這非常有用。 hasconfig:remote.*.url-
關鍵字和冒號後面的數據被視為帶有標準 glob 通配符的模式,以及兩個額外的通配符
**/和/**,它們可以匹配多個組件。第一次看到此關鍵字時,將掃描其餘配置文件以查找遠端 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
值 (Values)
許多變量的值被視為簡單字串,但有些變量採用特定類型的值,並且對於如何書寫它們有相應規則。
- 布爾值 (boolean)
-
當變量被稱為採用布爾值時,接受許多 true 和 false 的同義詞;這些都不區分大小寫。
- 整數 (integer)
-
指定各種大小的許多變量的值可以加上
k、M等後綴,表示“按 1024 縮放數字”、“按 1024x1024 縮放”等。 - 顏色 (color)
-
採用顏色的變量的值是顏色列表(最多兩個,一個用於前景,一個用於背景)和屬性(任意多個),由空格分隔。
接受的基本顏色有
normal、black、red、green、yellow、blue、magenta、cyan、white和default。給出的第一個顏色是前景;第二個是背景。除normal和default外的所有基本顏色都有一個亮色變體,可以通過在顏色前加上bright來指定,例如brightred。顏色
normal不會改變顏色。它與空字串相同,但當單獨指定背景顏色時可用作前景顏色(例如 "normal red")。顏色
default明確將顏色重置為終端預設值,例如用於指定清除的背景。雖然在不同終端之間有所不同,但這通常與設置為 "white black" 不同。顏色也可以給出為 0 到 255 之間的數字;這些使用 ANSI 256 色模式(但請注意並非所有終端都支持此功能)。如果您的終端支持,您還可以將 24 位 RGB 值指定為十六進位,例如
#ff0ab3,或 12 位 RGB 值如#f1b,這等同於 24 位顏色#ff11bb。接受的屬性有
bold、dim、ul、blink、reverse、italic和strike(用於劃掉或“刪除線”字母)。屬性相對於顏色的位置(之前、之後或之間)並不重要。可以通過在特定屬性前加上no或no-來關閉特定屬性(例如noreverse、no-ul等)。偽屬性
reset在應用指定的著色之前重置所有顏色和屬性。例如,resetgreen將導致綠色前景和預設背景,而沒有任何活動屬性。空顏色字串不會產生任何顏色效果。這可用於避免對特定元素進行著色,而無需完全禁用顏色。
對於 git 的預定義顏色插槽,屬性旨在在彩色輸出中每個項目的開頭進行重置。因此,將
color.decorate.branch設置為black將以普通的black繪製該分支名稱,即使同一輸出行上的前一個內容(例如log--decorate輸出中分支名稱列表前的左括號)設置為以bold或其他屬性繪製。然而,自定義日誌格式可能會進行更複雜和分層的著色,負面形式在那裡可能很有用。 - 路徑名 (pathname)
-
採用路徑名值的變量可以給出以 "
~/" 或 "~user/" 開頭的字串,通常的波浪號擴展會應用於此類字串:~/展開為$HOME的值,~user/展開為指定用戶的主目錄。如果路徑以
%(prefix)/開頭,其餘部分被解釋為相對於 Git 的“運行時前綴”的路徑,即相對於安裝 Git 本身的位置。例如,%(prefix)/bin/指的是 Git 可執行文件本身所在的目錄。如果 Git 在沒有運行時前綴支持的情況下編譯,則會代入編譯進的前綴。在極少數情況下,如果需要指定一個不應展開的文字路徑,則需要以./為前綴,像這樣:./%(prefix)/bin。如果加上
:(optional) 前綴,如果命名路徑不存在,則該配置變量被視為不存在。
變量 (Variables)
請注意,此列表並不詳盡,也不一定完整。對於特定命令的變量,您將在適當的手冊頁中找到更詳細的說明。
其他與 git 相關的工具可以並且確實使用它們自己的變量。在為您自己的工具發明新變量時,請確保它們的名稱不會與 Git 本身和其他常用工具使用的變量衝突,並在您的文檔中描述它們。
add.ignoreErrorsadd.ignore-errors(已棄用)-
告訴
gitadd當某些文件由於索引錯誤而無法添加時繼續添加文件。等同於 git-add[1] 的--ignore-errors選項。add.ignore-errors已棄用,因為它不遵循配置變量的常用命名約定。 - advice.*
-
這些變量控制旨在幫助新用戶的各種可選幫助訊息。當未配置時,Git 將給出該訊息以及如何關閉它的說明。您可以通過將相應變量設置為
false來告訴 Git 您已經了解該問題,不再需要特定的幫助訊息。由於它們旨在幫助人類用戶,這些訊息輸出到標準錯誤。當運行 Git 作為子進程的工具發現它們具有破壞性時,它們可以在環境中設置
GIT_ADVICE=0來關閉所有建議訊息。- addEmbeddedRepo
-
當用戶意外將一個 git 存儲庫添加到另一個存儲庫中時顯示。
- addEmptyPathspec
-
當用戶運行
gitadd而未提供 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
-
當用戶嘗試刪除未完全合併的分支而未設置強制選項時顯示。
- ignoredHook
-
當鉤子因未設置為可執行而被忽略時顯示。
- 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
-
當編輯變基待辦事項列表後出現錯誤時顯示。
- refSyntax
-
當用戶提供非法的引用名稱時顯示,以告訴用戶有關引用語法文檔的資訊。
- resetNoRefresh
-
當 git-reset[1] 在重置後刷新索引需要超過 2 秒時顯示,以告訴用戶他們可以使用
--no-refresh選項。 - resolveConflict
-
當衝突阻止執行操作時,由各種命令顯示。
- rmHints
-
當 git-rm[1] 輸出失敗時顯示,以提供如何從當前狀態繼續的說明。
- sequencerInUse
-
當序列器命令已在進行中時顯示。
- skippedCherryPicks
-
當 git-rebase[1] 跳過已揀選到上游分支的提交時顯示。
- 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
-
當用戶運行子模組命令而失敗(因為未運行
gitsubmoduleupdate--init)時顯示。 - suggestDetachingHead
-
當 git-switch[1] 拒絕在沒有明確
--detach選項的情況下分離 HEAD 時顯示。 - updateSparsePath
-
當要求 git-add[1] 或 git-rm[1] 更新當前稀疏檢出之外的索引條目時顯示。
- waitingForEditor
-
當 Git 正在等待編輯器輸入時顯示。當編輯器未在終端內啟動時非常相關。
- worktreeAddOrphan
-
當使用者嘗試從無效的引用(reference)建立工作樹(worktree)時顯示,用以告知使用者如何改為建立一個新的未出生分支(unborn branch)。
- alias.*
- alias.*.command
-
git[1] 命令封裝程式的命令別名。別名可以使用兩種語法定義:
-
不帶子區段,例如:[
alias]co=checkout。別名名稱(此例中的 "co")僅限使用 ASCII 字母數字字元與-,且匹配時不區分大小寫。 -
帶有子區段,例如:[
alias"co"]command=checkout。別名名稱可包含任何字元(換行符與 NUL 位元組除外),包括 UTF-8,且匹配時作為原始位元組並區分大小寫。您可以在command中定義該別名的動作。
範例
# Without subsection (ASCII alphanumeric and dash only) [alias] co = checkout st = status # With subsection (allows any characters, including UTF-8) [alias "hämta"] command = fetch [alias "rätta till"] command = commit --amend定義 Git 別名後,例如:
$ git config --global alias.last "cat-file commit HEAD" # Which is equivalent to $ git config --global alias.last.command "cat-file commit HEAD"
gitlast等同於gitcat-filecommitHEAD。為了避免指令碼使用上的混淆與麻煩,除了已棄用的命令外,隱藏既有 Git 命令的別名將會被忽略。參數以空格分隔,支援一般的 Shell 引號與跳脫字元。可以使用一對引號或反斜線來引述它們。
請注意,別名的第一個單字不一定是命令。它可以是一個會傳遞給
git呼叫的命令列選項。特別是,這在搭配-c傳遞一次性設定,或使用-p強制分頁時非常有用。例如,可以定義loud-rebase=-ccommit.verbose=truerebase,這樣執行gitloud-rebase就等同於執行git-ccommit.verbose=truerebase。此外,ps=-pstatus會是一個很有用的別名,因為gitps會對gitstatus的輸出進行分頁,而原始命令則不會。如果別名展開以驚嘆號開頭,它將被視為 Shell 命令。例如,定義
alias.new=!gitk--all--notORIG_HEAD,呼叫gitnew就等同於執行 Shell 命令gitk--all--notORIG_HEAD。注意:-
Shell 命令將會從儲存庫的頂層目錄執行,這不一定是當前目錄。
-
GIT_PREFIX設定為從原始當前目錄執行gitrev-parse--show-prefix的回傳值。參見 git-rev-parse[1]。 -
Shell 命令別名會自動接收提供給 Git 命令列的任何額外參數,作為位置參數。
-
如果您的 Shell 別名是一個包含多個命令的「單行」指令碼(例如在管線中)、引用多個參數,或者無法處理新增在結尾的位置參數,則需要特別小心。例如:
alias.cmd="!echo$1|grep$2"若以gitcmd12呼叫,將會執行為 echo $1 | grep $2 1 2,這不是您想要的結果。 -
處理此問題的一個簡便方法是將您的指令碼操作寫在一個內嵌函式中,然後用命令列提供的任何參數來呼叫它。例如 alias.cmd = "!c() { echo $1 | grep $2 ; }; c" 將會正確執行前述的例子。
-
設定
GIT_TRACE=1可以協助您對別名所執行的命令進行除錯。
-
-
- am.keepcr
-
如果設為 true,git-am[1] 在處理 mbox 格式的修補檔時,會帶上參數
--keep-cr呼叫 git-mailsplit[1]。在此情況下,git-mailsplit[1] 不會移除以 \r\n 結尾的行中的 \r。此設定可透過命令列給予--no-keep-cr來覆寫。 - am.threeWay
-
預設情況下,如果修補檔無法乾淨地套用,git-am[1] 將會失敗。當設為 true 時,此設定會告知 git-am[1] 在修補檔記錄了它預計要套用的 blob 識別碼,且我們在本地端擁有這些 blob 時,改用三路合併(3-way merge,等同於在命令列給予
--3way選項)。預設值為false。 - am.messageId
-
使用 git-am[1] 時,根據電子郵件標頭將
Message-ID尾註(trailer)新增至提交中(參見 git-interpret-trailers[1])。亦請參見--message-id與--no-message-id選項。 - 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
-
儲存庫中用以讀取屬性的樹狀物件(tree)引用,而非工作樹中的
.gitattributes檔案。如果該值無法解析為有效的樹狀物件,則改為使用空樹。當使用GIT_ATTR_SOURCE環境變數或--attr-source命令列選項時,此設定變數無效。
|
注意
|
bitmapPseudoMerge.* 中的設定選項被視為實驗性功能,未來可能會有所變更或完全移除。關於偽合併點陣圖(pseudo-merge bitmap)功能的詳細資訊,請參見 gitpacking[7] 的「Pseudo-merge bitmaps」章節。 |
- bitmapPseudoMerge.<name>.pattern
-
用於匹配引用名稱的正規表示式。符合此模式的引用所指向的提交(且滿足以下條件,例如
bitmapPseudoMerge.<name>.sampleRate與bitmapPseudoMerge.<name>.threshold),將被考慮納入偽合併點陣圖中。提交會根據指向該提交的引用是否匹配該模式(一個擴充正規表示式)而被分組到偽合併群組中。
在偽合併群組內,提交可能會根據模式中的擷取群組(capture groups)進一步分組為子群組。這些子群組是透過串接正規表示式中的任何擷取群組,並在中間加上 - 破折號所形成的。
例如,如果模式為
refs/tags/,則所有標籤(前提是滿足以下條件)都將被視為相同偽合併群組的候選者。然而,如果模式為refs/remotes/([0-9])+/tags/,則來自不同遠端(remote)的標籤將會根據遠端編號被分組到不同的偽合併群組中。 - bitmapPseudoMerge.<name>.decay
-
決定連續的偽合併點陣圖群組大小遞減的速率。必須為非負數。此參數可被視為函數
f(n)=C*n^-k中的k,其中f(n) 是第 n 個群組的大小。將衰減率設為
0會使所有群組大小相同。將衰減率設為1會使nthgrouptobe1/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
-
不要將根提交(root commits)視為 git-blame[1] 中的邊界。此選項預設為 false。
- blame.ignoreRevsFile
-
忽略檔案中列出的修訂版本(每行一個完整的物件名稱),用於 git-blame[1]。空白字元與以
#開頭的註解將被忽略。此選項可重複使用多次。空檔名將重設被忽略修訂版本的清單。此選項的處理優先於命令列選項--ignore-revs-file。 - blame.markUnblamableLines
-
在 git-blame[1] 的輸出中,將無法歸因於另一個提交的被忽略修訂版本所變更的行標記為 *。
- blame.markIgnoredLines
-
在 git-blame[1] 的輸出中,將歸因於另一個提交的被忽略修訂版本所變更的行標記為 ?。
branch.autoSetupMerge-
告知
gitbranch、gitswitch與gitcheckout設定新分支,以便 git-pull[1] 能正確地從起始點分支合併。請注意,即使未設定此選項,亦可透過--track與--no-track選項對每個分支選擇此行為。此選項預設為true。有效設定如下: branch.autoSetupRebase-
當使用
gitbranch、gitswitch或gitcheckout建立追蹤其他分支的新分支時,此變數告知 Git 將拉取(pull)設定為變基(rebase)而非合併(見branch.<name>.rebase)。有效設定如下:關於如何設定分支以追蹤另一個分支的詳細資訊,請參見
branch.autoSetupMerge。此選項預設為never。 branch.sort-
此變數控制 git-branch[1] 顯示分支時的排序順序。在未提供
--sort=<value> 選項時,此變數的值將被用作預設值。請參見 git-for-each-ref[1] 的欄位名稱以取得有效值。 branch.<name>.remote-
當位於分支 <name> 時,告知
gitfetch與gitpush要從哪個遠端獲取或推送到哪個遠端。推送到的遠端可透過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一同定義給定分支的上游分支。它告知gitfetch/gitpull/gitrebase要合併哪個分支,也可能影響gitpush(參見push.default)。位於分支 <name> 時,它告知gitfetch預設的引用規格(refspec)要標記為在FETCH_HEAD中合併。該值的處理方式類似於引用規格的遠端部分,且必須符合從branch.<name>.remote所給定遠端獲取的引用。合併資訊由gitpull(會先呼叫gitfetch)使用,以查詢預設合併分支。若無此選項,gitpull預設會合併獲取到的第一個引用規格。指定多個值可進行章魚合併(octopus merge)。如果您希望設定gitpull,使其合併至本地儲存庫中另一個分支至 <name>,您可以將branch.<name>.merge指向該分支,並對branch.<name>.remote使用相對路徑設定.(句點)。 branch.<name>.mergeOptions-
設定合併至分支 <name> 的預設選項。語法與支援的選項與 git-merge[1] 相同,但目前不支援包含空白字元的選項值。
branch.<name>.rebase-
當設為 true 時,在執行
gitpull時,會將分支 <name> 變基於獲取的分支之上,而非合併預設遠端的預設分支。請參見pull.rebase以進行非分支特定的設定。當設為
merges(或僅m)時,將--rebase-merges選項傳遞給gitrebase,以便本地合併提交被包含在變基中(詳情請參見 git-rebase[1])。當值為
interactive(或僅i)時,變基將以互動模式執行。注意:這可能是一個危險的操作;除非您理解其影響,否則請勿使用(詳情請參見 git-rebase[1])。
branch.<name>.description-
分支描述,可使用
gitbranch--edit-description編輯。分支描述會自動新增至format-patch的封面信(cover letter)或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.*鍵可能出現在透過gitclone--bundle-uri選項找到的「套件清單檔案」中。如果將這些鍵放在儲存庫的設定檔中,目前不會產生任何效果,但未來可能會有所變更。請參見 套件 URI 設計文件 以取得更多詳細資訊。 - bundle.version
-
此整數值宣告了套件清單所使用的格式版本。目前唯一接受的值為
1。 - bundle.mode
-
此字串值應為
all或any。此值描述是否需要所有宣告的套件來解開(unbundle)對套件資訊的完整理解(all),或者清單中任何一個套件 URI 即已足夠(any)。 - bundle.heuristic
-
如果存在此字串值鍵,則套件清單被設計為能與增量
gitfetch命令良好運作。該啟發法標示出每個套件都有額外的鍵可用,有助於確定客戶端應下載哪一部分的套件。目前唯一能理解的值為creationToken。 - bundle.<id>.*
-
bundle.<id>.*鍵用於描述套件清單中的單一項目,分組在 <id> 下以便識別。 - bundle.<id>.uri
-
此字串值定義了 Git 可存取此 <id> 內容的 URI。此 URI 可以是套件檔案或另一個套件清單。
checkout.defaultRemote-
當您執行
gitcheckout<something> 或gitswitch<something> 且只有一個遠端時,它可能會隱含地回退到檢出並追蹤例如origin/<something>。一旦您有多個具有 <something> 參照的遠端,這將不再起作用。此設定允許設定一個偏好的遠端名稱,在消除歧義時應始終勝出。典型的使用案例是將其設定為origin。目前 git-switch[1] 和 git-checkout[1] 會在執行
gitcheckout<something> 或gitswitch<something> 將檢出另一個遠端上的 <something> 分支時使用此設定;而 git-worktree[1] 會在gitworktreeadd參照遠端分支時使用它。此設定未來可能會用於其他類似檢出的指令或功能。 checkout.guess-
為
gitcheckout和gitswitch中的--guess或--no-guess選項提供預設值。請參閱 git-switch[1] 和 git-checkout[1]。 checkout.workers-
更新工作區時使用的平行工作執行緒數量。預設值為 1,即循序執行。如果設定為小於 1 的值,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-
如果儲存庫是淺層(shallow)儲存庫,則拒絕複製;此選項可透過在命令列傳遞
--reject-shallow選項來覆寫。參見 git-clone[1]。 clone.filterSubmodules-
如果提供了部分複製篩選器(參見 git-rev-list[1] 中的
--filter),並且使用了--recurse-submodules,則該篩選器也將應用於子模組(submodules)。 - color.advice
-
一個布林值,用於啟用/停用提示(hints)中的顏色(例如當 push 失敗時,參見
advice.*清單)。可設為always、false(或never)或auto(或true),此時顏色僅在錯誤輸出到終端時使用。若未設定,則使用color.ui的值(預設為auto)。 - color.advice.hint
-
為提示使用自訂顏色。
- color.blame.highlightRecent
-
指定
gitblame--color-by-age的行註解顏色,該顏色取決於該行的產生時間(age)。此設定應設為以逗號分隔的顏色與日期設定清單,以顏色開始並以顏色結束,日期應從最舊到最新設定。如果該行是在給定的時間戳記之前引入的,中繼資料將會以指定的顏色著色,並覆寫較舊時間戳記的顏色。
除了絕對時間戳記外,相對時間戳記也可運作,例如
2.weeks.ago可用於處理任何超過 2 週之前的內容。其預設值為
blue,12monthago,white,1monthago,red,這會將超過一年的內容標記為藍色,一到十二個月之間的近期變更保持白色,而最近一個月內引入的行則標記為紅色。 - color.blame.repeatedLines
-
如果行註解來源於與上一行相同的提交,則為
gitblame--color-lines使用指定的顏色。預設為青色(cyan)。 - 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>
-
為 Diff 著色使用自訂顏色。<slot> 指定修補檔中使用指定顏色的部分,可以是
context(上下文文字 -plain為歷史同義詞)、meta(中繼資訊)、frag(區塊標頭)、func(區塊標頭中的函式)、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)的提交,則為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顏色模式是否應將輸出到分頁器(pager)的內容著色。預設為 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
-
指定支援的命令是否應以欄位(columns)輸出。此變數由空格或逗號分隔的代幣清單組成。
這些選項控制何時啟用該功能(預設為 never):
這些選項控制佈局(預設為 column)。若未指定 always、never 或 auto,設定其中任何選項即隱含 always。
最後,這些選項可與佈局選項結合使用(預設為 nodense):
- column.branch
-
指定
gitbranch是否應以欄位輸出分支清單。詳情請參見column.ui。 - column.clean
-
指定
gitclean-i中列出項目時的佈局,其總是以欄位顯示檔案與目錄。詳情請參見column.ui。 - column.status
-
指定
gitstatus是否應以欄位輸出未追蹤檔案。詳情請參見column.ui。 - column.tag
-
指定
gittag是否應以欄位輸出標籤清單。詳情請參見column.ui。
commit.cleanup-
此設定覆寫
gitcommit中--cleanup選項的預設值。詳情請參見 git-commit[1]。當您總是希望在提交訊息中保留以註解字元(core.commentChar,預設為#)開頭的行時,變更預設值會很有用。在這種情況下,您會執行gitconfigcommit.cleanupwhitespace(請注意,如果您這麼做,您必須自行刪除提交訊息範本中以註解字元開頭的說明行)。 commit.gpgSign-
一個布林值,指定是否應對所有提交進行 GPG 簽署。在執行諸如變基等操作時使用此選項,可能會導致大量提交被簽署。使用代理程式(agent)以避免多次輸入 GPG 通關密碼可能較為方便。
commit.status-
一個布林值,用於啟用/停用在使用編輯器準備提交訊息時,將狀態資訊包含在提交訊息範本中。預設為
true。 commit.template-
指定用作新提交訊息範本的檔案路徑。
commit.verbose-
一個布林值或整數,用於指定
gitcommit的詳細程度。詳情請參見 git-commit[1]。 - commitGraph.generationVersion
-
指定寫入或讀取 commit-graph 檔案時要使用的生成編號(generation number)版本類型。如果指定版本 1,則不會寫入或讀取修正後的提交日期。預設為 2。
- commitGraph.maxNewFilters
-
指定
gitcommit-graphwrite的--max-new-filters選項的預設值(參見 git-commit-graph[1])。 - commitGraph.changedPaths
-
如果為 true,則
gitcommit-graphwrite將預設計算並寫入已變更路徑(changed-path)的 Bloom 篩選器,等同於傳遞--changed-paths。如果為 false 或未設定,則只有在目前 commit-graph 檔案中已存在篩選器時,才會在gitcommit-graphwrite期間寫入已變更路徑的 Bloom 篩選器。這符合未帶任何--[no-]changed-paths選項的gitcommit-graphwrite之預設行為。若要重寫不含任何篩選器的 commit-graph 檔案,請使用--no-changed-paths選項。命令列選項--[no-]changed-paths總是優先於此設定。預設為未設定。 - commitGraph.readChangedPaths
-
已棄用。如果為 true,等同於 commitGraph.changedPathsVersion=-1;如果為 false,等同於 commitGraph.changedPathsVersion=0。(如果同時設定了 commitGraph.changedPathVersion,則 commitGraph.changedPathsVersion 優先。)
- commitGraph.changedPathsVersion
-
指定 Git 將讀取與寫入的已變更路徑 Bloom 篩選器版本。可以是 -1、0、1 或 2。請注意,大於 1 的值可能與尚未識別這些版本的舊版 Git 不相容。在混合版本環境中操作時請小心。
預設為 -1。
如果為 -1,Git 將使用儲存庫中已變更路徑 Bloom 篩選器的版本,若沒有則預設為 1。
如果為 0,Git 將不會讀取任何 Bloom 篩選器,並在指示寫入時寫入版本 1 的 Bloom 篩選器。
如果為 1,Git 將僅讀取版本 1 的 Bloom 篩選器,並寫入版本 1 的 Bloom 篩選器。
如果為 2,Git 將僅讀取版本 2 的 Bloom 篩選器,並寫入版本 2 的 Bloom 篩選器。
更多資訊請參見 git-commit-graph[1]。
- completion.commands
-
此選項僅由 git-completion.bash 使用,以從已完成命令清單中新增或移除命令。通常只會完成 porcelain 命令與少數其他選定命令。您可以在此變數中新增更多命令,並以空格分隔。在命令前加上 - 將會將其從既有清單中移除。
- core.fileMode
-
告知 Git 是否應遵守工作樹中檔案的執行位元(executable bit)。
某些檔案系統在檢出(checkout)被標記為可執行檔的檔案時會遺失執行位元,或者檢出帶有執行位元的非執行檔。 git-clone[1] 或 git-init[1] 會探測檔案系統以查看其是否正確處理執行位元,此變數會依需要自動設定。
然而,儲存庫可能位於正確處理檔案模式(filemode)的檔案系統上,該變數在建立時被設為 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 等)上運作得更好。例如,如果目錄清單在 Git 預期 "Makefile" 時找到了 "makefile",Git 會假設它們其實是同一個檔案,並繼續將其記為 "Makefile"。
預設值為 false,但 git-clone[1] 或 git-init[1] 在建立儲存庫時會適當地探測並將 core.ignoreCase 設為 true。
Git 依賴此變數的正確設定來適應您的作業系統與檔案系統。修改此值可能會導致意外行為。
- core.precomposeUnicode
-
此選項僅由 Mac OS 版 Git 使用。當 core.precomposeUnicode=true 時,Git 會還原 Mac OS 對檔名進行的 Unicode 分解(decomposition)。這在 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])。
與基於 Hook 的檔案系統監視器一樣,內建檔案系統監視器可以加快在檔案眾多的工作目錄中需要重新整理 Git 索引的 Git 命令(例如
gitstatus)。內建監視器消除了安裝與維護外部第三方工具的需求。內建檔案系統監視器目前僅在有限的支援平台上可用。目前包括 Windows 與 MacOS。
否則,此變數包含 "fsmonitor" Hook 命令的路徑。
此 Hook 命令用於識別自請求日期/時間以來可能已變更的所有檔案。此資訊用於透過避免不必要地掃描未變更的檔案來加快 git 速度。
請參見 githooks[5] 的「fsmonitor-watchman」章節。
請注意,如果您同時使用多個 Git 版本(例如命令列使用一個版本,IDE 工具中使用另一個版本),
core.fsmonitor的定義已擴充為允許布林值(除了 Hook 路徑名稱外)。Git 2.35.1 及更早版本將無法理解布林值,並會將 "true" 或 "false" 值視為要呼叫的 Hook 路徑。Git 2.26 到 2.35.1 版本預設為 Hook 協定 V2,並會退回到無 fsmonitor(完整掃描)。2.26 之前的 Git 版本預設為 Hook 協定 V1,並會靜默假定沒有變更需要報告(無掃描),因此狀態命令可能會報告不完整的結果。因此,在使用內建檔案系統監視器之前,最好升級您所有的 Git 版本。 - core.fsmonitorHookVersion
-
設定呼叫 "fsmonitor" Hook 時要使用的協定版本。
目前有版本 1 與 2。若未設定,則會先嘗試版本 2,若失敗則嘗試版本 1。版本 1 使用時間戳記作為輸入來確定自該時間以來哪些檔案有變更,但某些監視器(如 Watchman)在與時間戳記一起使用時存在競爭條件(race condition)。版本 2 使用不透明字串,以便監視器能返回可用於確定哪些檔案已變更的資訊,而不會有競爭條件。
- core.trustctime
-
如果為 false,則會忽略索引與工作樹之間的 ctime 差異;當 inode 變更時間經常被 Git 外部的某個程式(檔案系統爬蟲與某些備份系統)修改時,這很有用。參見 git-update-index[1]。預設為 true。
- core.splitIndex
-
如果為 true,將使用索引的 split-index 功能。參見 git-update-index[1]。預設為 false。
- core.untrackedCache
-
決定如何處理索引的「未追蹤快取」(untracked cache)功能。若此變數未設定或設為
keep,它將被保留。若設為true,它將自動新增;若設為false,它將自動移除。在將其設為true之前,您應檢查 mtime 在您的系統上是否運作正常。參見 git-update-index[1]。除非啟用了會將此設定預設為true的feature.manyFiles,否則預設為keep。 - core.checkStat
-
當遺失或設為
default時,會檢查 stat 結構中的許多欄位以偵測檔案自 Git 查看後是否已修改。當此設定變數設為minimal時,mtime 與 ctime 的次秒部分、檔案所有者的 uid 與 gid、inode 編號(以及裝置編號,若 Git 編譯時使用了它),將從檢查中排除,只剩下 mtime(與 ctime,如果設定了core.trustCtime)的整秒部分與檔案大小會被檢查。有些 Git 實作不會在某些欄位中留下可用值(例如 JGit);透過從比較中排除這些欄位,當同一個儲存庫被這些其他系統同時使用時,
minimal模式可能有助於互通性。 - core.quotePath
-
輸出路徑的命令(例如 ls-files、diff)將透過將路徑名用雙引號括起來,並以 C 語言跳脫控制字元(例如 TAB 為 \t、LF 為 \n、反斜線為 \\)或值大於 0x80 的位元組(例如 UTF-8 中 "micro" 的八進位 \302\265)的方式,對路徑名中的「異常」字元進行引述。如果此變數設為 false,則大於 0x80 的位元組不再被視為「異常」。雙引號、反斜線與控制字元無論此變數設定如何總是會被跳脫。單一空格字元不被視為「異常」。許多命令可以使用
-z選項完整地以原樣輸出路徑名。預設值為 true。 - core.eol
-
為被標記為文字的檔案(透過設定
text屬性,或具有text=auto且 Git 自動偵測內容為文字)設定工作目錄中使用的行尾類型。替代方案為 lf、crlf 與 native(使用平台原生的行尾)。預設值為native。關於行尾轉換的更多資訊,請參見 gitattributes[5]。請注意,如果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
-
Git 執行 UTF-8 往返檢查(round trip checks)時所使用的編碼列表(以逗號和/或空白字元分隔),若這些編碼用於
working-tree-encoding屬性(請參閱 gitattributes[5])。預設值為SHIFT-JIS。 - core.symlinks
-
若設為 false,符號連結(symbolic links)將被檢出為包含連結文字的小型純文字檔。git-update-index[1] 和 git-add[1] 不會將其記錄的類型更改為一般檔案。這在不支援符號連結的檔案系統(如 FAT)上非常有用。
預設值為 true,除非 git-clone[1] 或 git-init[1] 在建立儲存庫時進行偵測,若有必要則會將 core.symlinks 設為 false。
- core.gitProxy
-
使用 Git 協定進行提取(fetch)時,用來替代直接連線到遠端伺服器所執行的「代理指令」(格式為 command host port)。如果該變數值格式為 "COMMAND for DOMAIN",則該指令僅適用於以指定網域字串結尾的主機名稱。此變數可設定多次,並依照給定順序進行比對;第一個符合的項目將被採用。
可透過
GIT_PROXY_COMMAND環境變數覆蓋(該變數始終通用,且不具備特殊的 "for" 處理邏輯)。特殊字串
none可用作代理指令,表示針對特定網域模式不使用代理。這對於將防火牆內的伺服器排除在代理使用範圍之外,同時為外部網域預設使用通用代理非常有用。 - core.sshCommand
-
若設定此變數,當
gitfetch和gitpush需要連線到遠端系統時,將使用指定的指令而非ssh。該指令的形式與GIT_SSH_COMMAND環境變數相同,且當設定了該環境變數時會被覆蓋。 - core.ignoreStat
-
若為 true,Git 將透過為那些在索引(index)和工作樹(working tree)中已完全更新的追蹤檔案設定「assume-unchanged」(假定未變更)位元,來避免使用 lstat() 呼叫以偵測檔案是否已變更。
當檔案在 Git 外部被修改時,使用者需要明確地暫存這些修改過的檔案(例如,請參閱 git-update-index[1] 中的「範例」章節)。通常情況下,Git 不會偵測到這些檔案的變更。
這在 lstat() 呼叫非常緩慢的系統(如 CIFS/Microsoft Windows)上非常有用。
預設為 False。
- core.preferSymlinkRefs
-
使用符號連結(symbolic links)代替 HEAD 和其他符號參照(symbolic reference)檔案的預設 "symref" 格式。這有時是為了相容那些期望 HEAD 是符號連結的舊腳本所必需的。
此設定已過時,將在 Git 3.0 中移除。符號參照將一律寫入為文字形式的 symrefs。
- core.alternateRefsCommand
-
當宣告來自替代儲存庫(alternate)的可用歷史紀錄提示(tips)時,使用 shell 執行指定的指令,而不是 git-for-each-ref[1]。第一個參數是替代儲存庫的絕對路徑。輸出必須包含每一行一個十六進位物件 ID(即由
gitfor-each-ref--format='%(objectname) 所產生的輸出)。請注意,一般情況下您無法將
gitfor-each-ref直接放入設定值中,因為它不接受儲存庫路徑作為參數(但您可以將上述指令包裹在 shell 腳本中)。 - core.alternateRefsPrefixes
-
列出替代儲存庫中的參照時,僅列出以給定字首開頭的參照。字首的比對方式如同將其作為參數傳遞給 git-for-each-ref[1] 一樣。若要列出多個字首,請以空白分隔。如果設定了
core.alternateRefsCommand,則設定core.alternateRefsPrefixes無效。 - core.bare
-
若為 true,則假定此儲存庫為「裸儲存庫」(bare),且與其關聯的沒有工作目錄。若屬此情況,許多需要工作目錄的指令將會被停用,例如 git-add[1] 或 git-merge[1]。
此設定由 git-clone[1] 或 git-init[1] 在儲存庫建立時自動猜測。預設情況下,結尾為 "/.git" 的儲存庫被假定為非裸儲存庫(bare = false),而所有其他儲存庫則被假定為裸儲存庫(bare = true)。
- core.worktree
-
設定工作樹(working tree)根目錄的路徑。如果設定了
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.lockfilePid
-
若為 true,Git 將在鎖定檔案旁建立一個 PID 檔案。當鎖定獲取失敗且 PID 檔案存在時,Git 可以提供關於持有鎖定的行程的額外診斷資訊,包括它是否仍在執行。預設為
false。PID 檔案的命名方式是在
.lock字尾前插入~pid。例如,若鎖定檔案為index.lock,則 PID 檔案將為index~pid.lock。該檔案包含一行格式為pid<value> 的內容,後接一個換行符。 - 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。此資訊可用於確定「2 天前」分支的頂端(tip)是哪個提交。
此值在關聯了工作目錄的儲存庫中預設為 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 file)中的物件的壓縮等級。-1 為 zlib 預設值。0 表示不壓縮,1..9 表示各種速度/大小權衡,9 為最慢。若未設定,則預設為 core.compression。若該值也未設定,則預設為 1(最佳速度)。
- core.packedGitWindowSize
-
單次對映(mapping)操作中對映至記憶體的封裝檔位元組數。較大的視窗大小可能允許您的系統更快速地處理少量大型封裝檔。較小的視窗大小會因增加對作業系統記憶體管理員的呼叫而對效能產生負面影響,但在存取大量大型封裝檔時可能會提高效能。
若編譯時設定了 NO_MMAP,則預設為 1 MiB,否則在 32 位元平台上預設為 32 MiB,在 64 位元平台上預設為 1 GiB。這對所有使用者/作業系統來說都是合理的。您可能不需要調整此值。
支援 k、 m 或 g 的通用單位字尾。
- core.packedGitLimit
-
同時從封裝檔對映至記憶體的最大位元組數。如果 Git 需要同時存取超過此位元組數才能完成操作,它將取消對映現有區域以回收行程內的虛擬位址空間。
在 32 位元平台上預設為 256 MiB,在 64 位元平台上預設為 32 TiB(實際上無限)。這對除最大型專案外的所有使用者/作業系統來說都是合理的。您可能不需要調整此值。
支援 k、 m 或 g 的通用單位字尾。
- core.deltaBaseCacheLimit
-
每個執行緒用於快取可能被多個增量物件(deltified objects)參考的基礎物件的最大位元組數。透過在快取中儲存完整的解壓縮基礎物件,Git 能夠避免多次拆包(unpacking)和解壓縮頻繁使用的基礎物件。
所有平台預設均為 96 MiB。這對除最大型專案外的所有使用者/作業系統來說都是合理的。您可能不需要調整此值。
支援 k、 m 或 g 的通用單位字尾。
- core.bigFileThreshold
-
被視為「大」檔案的尺寸,如下所述,這會改變許多 git 指令的行為,以及這類檔案在儲存庫中的儲存方式。預設值為 512 MiB。支援 k、 m 或 g 的通用單位字尾。
超過設定限制的檔案將:
-
以 deflate 壓縮儲存在封裝檔中,而不嘗試增量壓縮。
預設限制主要是考慮到此使用情境。有了它,大多數專案的原始程式碼和其他文字檔案將被增量壓縮,但不會壓縮較大的二進位媒體檔案。
儲存不帶增量壓縮的大型檔案可避免過度的記憶體使用,代價是稍微增加磁碟空間使用量。
-
將被視為已標記為 "binary"(請參閱 gitattributes[5])。例如,git-log[1] 和 git-diff[1] 將不會為超過此限制的檔案計算 diff。
-
通常會在寫入時進行串流傳輸,這避免了過度的記憶體使用,代價是產生一些固定的開銷。使用此功能的指令包括 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之外,指定包含屬性的檔案路徑(請參閱 gitattributes[5])。預設值為$XDG_CONFIG_HOME/git/attributes。若$XDG_CONFIG_HOME未設定或為空,則改用$HOME/.config/git/attributes。 - core.hooksPath
-
預設情況下,Git 會在
$GIT_DIR/hooks目錄中尋找您的勾點(hooks)。將此設定為不同的路徑(例如/etc/git/hooks),Git 就會嘗試在該目錄中尋找您的勾點(例如,在/etc/git/hooks/pre-receive而不是$GIT_DIR/hooks/pre-receive中)。該路徑可以是絕對或相對路徑。相對路徑被視為相對於執行勾點的目錄(請參閱 githooks[5] 的「描述」章節)。
此設定變數在您希望集中配置 Git 勾點而不是在每個儲存庫基礎上進行配置時,或者作為一種更靈活且集中的替代方案(相比於修改預設勾點的
init.templateDir)時非常有用。您也可以透過將
core.hooksPath設為/dev/null來完全停用所有勾點。這通常僅建議專家使用者使用,並以git-ccore.hooksPath=/dev/null... 形式的配置參數在每個指令的基礎上使用。 - core.editor
-
當設定此變數且未設定
GIT_EDITOR環境變數時,諸如commit和tag這類允許透過啟動編輯器編輯訊息的指令將使用此變數的值。請參閱 git-var[1]。 - core.commentChar
- core.commentString
-
諸如
commit和tag這類允許您編輯訊息的指令會將以該字元開頭的行視為註解,並在編輯器返回後移除它們(預設為 #)。若設為 "auto",
git-commit將選擇一個在現有提交訊息中未在任何行開頭出現過的字元。由於以下限制,此值的支援已過時,將在 Git 3.0 中移除:-
它與在提交訊息範本中新增註解不相容。這包括由
cherry-pick、merge、rebase和revert新增到提交訊息中的衝突註解。 -
它與在
prepare-commit-msg勾點中向提交訊息新增註解不相容。 -
它與重訂基準(rebase)時的
fixup和squash指令不相容, -
它不被
gitnotes所遵守。
請注意,這兩個變數互為別名,在現代 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(即重試 100ms)。
- 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=FRXless-S。環境變數沒有設定S選項,但命令列有,指示 less 截斷長行。同樣地,將core.pager設為less-+F會從命令列停用環境變數指定的F選項,停用less的「一屏即退出」行為。您可以針對特定指令啟用某些旗標:例如,將pager.blame設為less-S僅為gitblame啟用行截斷。同樣地,當
LV環境變數未設定時,Git 將其設為-c。您可以透過匯出具有另一個值的LV或將core.pager設為lv+c來覆蓋此設定。 - core.whitespace
-
以逗號分隔的常見空白字元問題列表,需留意。git diff 將使用
color.diff.whitespace來反白顯示它們,且 git apply --whitespace=error 會將它們視為錯誤。您可以加前置-來停用其中任何一個(例如-trailing-space)。-
blank-at-eol將行尾的尾隨空白字元視為錯誤(預設啟用)。 -
space-before-tab將在行初始縮排部分中緊接在定位點字元(tab)之前出現的空格字元視為錯誤(預設啟用)。 -
indent-with-non-tab將以空格字元而非等效定位點縮排的行視為錯誤(預設停用)。 -
tab-in-indent將行初始縮排部分中的定位點字元視為錯誤(預設停用)。 -
blank-at-eof將在檔案末尾新增的空行視為錯誤(預設啟用)。 -
trailing-space是涵蓋blank-at-eol和blank-at-eof的簡寫。 -
cr-at-eol將行尾的回車字元(carriage-return)視為行終止符的一部分,即透過它,如果該回車字元之前的字元不是空白字元,則不會觸發trailing-space(預設停用)。 -
incomplete-line將檔案末尾缺少換行符的最後一行視為錯誤(預設停用)。 -
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會清除已同步的組件集合。 -
loose-object強化以鬆散物件(loose-object)形式新增到儲存庫的物件。 -
pack強化以封裝檔形式新增到儲存庫的物件。 -
pack-metadata強化封裝檔點陣圖(bitmaps)和索引。 -
commit-graph強化 commit-graph 檔案。 -
index在修改時強化索引。 -
objects是一個聚合選項,等同於loose-object,pack。 -
reference強化儲存庫中已修改的參照。 -
derived-metadata是一個聚合選項,等同於pack-metadata,commit-graph。 -
committed是一個聚合選項,目前等同於objects。此模式會犧牲一些效能,以確保透過gitcommit或類似指令提交到儲存庫的工作得到強化。 -
added是一個聚合選項,目前等同於committed,index。此模式會犧牲額外的效能,以確保gitadd和類似操作的結果得到強化。 -
all是一個同步上述所有個別組件的聚合選項。
-
- core.fsyncMethod
-
一個值,表示 Git 將使用 fsync 和相關原語(primitives)強化儲存庫資料的策略。
-
fsync使用 fsync() 系統呼叫或平台等效物。 -
writeout-only發出頁面快取寫回(writeback)請求,但根據檔案系統和儲存硬體的不同,在系統崩潰時新增到儲存庫的資料可能無法持久。這是 macOS 上的預設模式。 -
batch啟用一種模式,使用 writeout-only 快取刷新將多個更新暫存到磁碟寫回快取中,然後對虛擬檔案執行單一完整的 fsync,以在操作結束時觸發磁碟快取刷新。目前
batch模式僅適用於鬆散物件檔案。其他儲存庫資料如同指定了fsync一樣具有持久性。此模式預期在 macOS(儲存在 HFS+ 或 APFS 檔案系統上的儲存庫)和 Windows(儲存在 NTFS 或 ReFS 檔案系統上的儲存庫)上與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.createObject
-
您可以將其設為 link,在此情況下,使用硬連結(hardlink)後刪除原始檔,以確保物件建立不會覆蓋現有物件。
在某些檔案系統/作業系統組合上,這是不可靠的。請在該處將此配置設定設為 rename;然而,這將移除確保現有物件檔案不會被覆蓋的檢查。
- core.notesRef
-
顯示提交訊息時,同時顯示儲存在給定參照中的註解(notes)。該參照必須是完整限定的。如果給定的參照不存在,這不是錯誤,但意味著不應列印任何註解。
此設定預設為 "refs/notes/commits",且可由
GIT_NOTES_REF環境變數覆蓋。請參閱 git-notes[1]。 - core.commitGraph
-
若為 true,則 git 將讀取 commit-graph 檔案(如果存在)以解析提交的圖形結構。預設為 true。請參閱 git-commit-graph[1] 以取得更多資訊。
- core.useReplaceRefs
-
若設為
false,行為如同在命令列上給定了--no-replace-objects選項。請參閱 git[1] 和 git-replace[1] 以取得更多資訊。 - core.multiPackIndex
-
使用 multi-pack-index 檔案透過單一索引來追蹤多個封裝檔。請參閱 git-multi-pack-index[1] 以取得更多資訊。預設為 true。
- core.sparseCheckout
-
啟用「稀疏檢出」(sparse checkout)功能。請參閱 git-sparse-checkout[1] 以取得更多資訊。
- core.sparseCheckoutCone
-
啟用稀疏檢出功能的「錐模式」(cone mode)。當稀疏檢出檔案包含有限的模式集時,此模式可提供顯著的效能優勢。透過將此變數設為 false,可以請求「非錐模式」,以允許指定更靈活的模式。請參閱 git-sparse-checkout[1] 以取得更多資訊。
- core.abbrev
-
設定物件名稱縮寫後的長度。若未指定或設為 "auto",則會根據儲存庫中封裝物件的近似數量計算出一個適當的值,希望這足以讓縮寫後的物件名稱保持一段時間的唯一性。若設為 "no",則不進行縮寫,並以完整長度顯示物件名稱。最小長度為 4。
- core.maxTreeDepth
-
Git 在遍歷樹(tree)時願意遞迴的最大深度(例如 "a/b/cde/f" 的深度為 4)。這是一種容錯機制,允許 Git 乾淨地中止,通常不需要進行調整。當使用 MSVC 編譯 Git 時,預設值為 512。否則,預設值為 2048。
- credential.helper
-
指定當需要使用者名稱或密碼憑證時要呼叫的外部協助程式;該協助程式可能會查詢外部儲存空間以避免提示使用者輸入憑證。這通常是具有可能參數的憑證協助程式名稱,但也可以是具有參數的絕對路徑,若以
!開頭,則為 shell 指令。請注意,可以定義多個協助程式。請參閱 gitcredentials[7] 以取得詳細資訊和範例。
- credential.interactive
-
預設情況下,當需要新憑證時,Git 和任何配置的憑證協助程式都會要求使用者輸入。如果這些憑證仍然有效,許多這類協助程式會根據儲存的憑證取得成功。為避免 Git 可能的使用者互動,請將
credential.interactive=false。一些憑證協助程式也遵守此選項。 - credential.useHttpPath
-
獲取憑證時,將 http 或 https URL 的 "path" 元件視為重要的。預設為 false。請參閱 gitcredentials[7] 以取得更多資訊。
- credential.sanitizePrompt
-
預設情況下,顯示為密碼提示一部分的使用者名稱和主機不允許包含控制字元(預設會被 URL 編碼)。將此設定配置為
false以覆蓋該行為。 - credential.protectProtocol
-
預設情況下,Git 與憑證協助程式交談時所使用的協定不允許回車字元(Carriage Return)。此設定允許使用者覆蓋此預設值。
- credential.username
-
若未設定網路驗證的使用者名稱,請預設使用此使用者名稱。請參閱下方的 credential.<context>.*,以及 gitcredentials[7]。
- credential.<url>.*
-
上述任何 credential.* 選項都可以選擇性地應用於某些憑證。例如,"credential.https://example.com.username" 將僅為前往 example.com 的 https 連線設定預設使用者名稱。請參閱 gitcredentials[7] 以取得 URL 如何比對的詳細資訊。
- credentialCache.ignoreSIGHUP
-
告知 git-credential-cache—daemon 忽略 SIGHUP,而不是退出。
- credentialStore.lockTimeoutMS
-
git-credential-store 在嘗試鎖定憑證檔案時重試的時間長度(以毫秒為單位)。值 0 表示根本不重試;-1 表示無限期重試。預設值為 1000(即重試 1 秒)。
diff.autoRefreshIndex-
使用
gitdiff與工作樹檔案進行比較時,不要將僅統計變更視為已變更。相反地,靜默執行gitupdate-index--refresh,以更新工作樹內容與索引中內容相符的路徑的快取統計資訊。此選項預設為true。請注意,這僅影響gitdiffPorcelain,而不影響底層diff指令(如gitdiff-files)。 diff.dirstat-
以逗號分隔的
--dirstat參數列表,指定 git-diff[1] 等工具中--dirstat選項的預設行為。預設值可在命令列上覆蓋(使用--dirstat=<param>,...)。後備預設值(當未被diff.dirstat變更時)為changes,noncumulative,3。可用的參數如下:changes-
透過計算從來源移除或新增到目的地的行數來計算 dirstat 數值。這會忽略檔案內純粹的程式碼移動。換句話說,重新排列檔案中的行不像其他變更那樣被大量計算。這是未提供參數時的預設行為。
lines-
透過執行一般的基於行的差異分析來計算 dirstat 數值,並加總移除/新增的行數。(對於二進位檔案,則計算 64 位元組的區塊,因為二進位檔案沒有自然的「行」概念)。這比
changes行為更耗費資源,但它會將檔案內重新排列的行視為與其他變更一樣重要。產生的輸出與您從其他--*stat選項獲得的結果一致。 files-
透過計算更改的檔案數量來計算 dirstat 數值。每個更改的檔案在 dirstat 分析中的權重相等。這是計算上最便宜的
--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> 行上下文的 diff,而不是預設的 3 行。此值可由
-U選項覆蓋。 diff.interHunkContext-
顯示 diff 區塊(hunks)之間的上下文,最多顯示指定的行數,藉此融合彼此接近的區塊。此值作為
--inter-hunk-context命令列選項的預設值。 diff.external-
如果設定了此配置變數,則 diff 產生不會使用內部的 diff 機制,而是使用給定的指令。可由
GIT_EXTERNAL_DIFF環境變數覆蓋。該指令以 git[1] 中「git Diffs」下描述的參數呼叫。注意:如果您只想在檔案的子集上使用外部 diff 程式,您可能需要改用 gitattributes[5]。 diff.trustExitCode-
如果此布林值設為
true,則diff.external指令預期在認為輸入檔案相等時傳回退出代碼 0,在認為不同時傳回 1,如同diff(1)。如果預設設為false,則指令預期無論相等與否都傳回退出代碼0。任何其他退出代碼會導致 Git 報告嚴重錯誤。 diff.ignoreSubmodules-
設定
--ignore-submodules的預設值。請注意,這僅影響gitdiffPorcelain,而不影響底層diff指令(如gitdiff-files)。gitcheckout和gitswitch在報告未提交的變更時也遵守此設定。將其設為all會停用當status.submoduleSummary設定時由gitcommit和gitstatus通常顯示的子模組摘要,除非使用--ignore-submodules命令列選項進行覆蓋。gitsubmodule指令不受此設定影響。預設設定為 untracked,因此任何未追蹤的子模組都會被忽略。 diff.mnemonicPrefix-
若設定,
gitdiff會使用一組不同於標準a/和b/的字首對,具體取決於正在比較的項目。當此配置生效時,反向 diff 輸出也會交換字首的順序: diff.noPrefix-
若設定,
gitdiff不會顯示任何來源或目的地字首。 diff.srcPrefix-
若設定,
gitdiff使用此來源字首。預設為a/。 diff.dstPrefix-
若設定,
gitdiff使用此目的地字首。預設為b/。 diff.relative-
若設為
true,gitdiff不會顯示目錄之外的變更,並顯示相對於當前目錄的檔案名稱。 diff.orderFile-
指示如何在 diff 中對檔案進行排序的檔案。請參閱 git-diff[1] 的
-O選項以取得詳細資訊。若diff.orderFile是相對路徑名稱,它被視為相對於工作樹頂層。 diff.renameLimit-
在複製/重新命名偵測的詳盡部分中要考慮的檔案數量;等同於
gitdiff選項-l。若未設定,目前預設值為 1000。如果關閉重新命名偵測,此設定無效。 diff.renames-
Git 是否以及如何偵測重新命名。若設為
false,則停用重新命名偵測。若設為true,則啟用基本重新命名偵測。若設為copies或copy,Git 也會偵測複製。預設為true。請注意,這僅影響 git-diff[1] 和 git-log[1] 等gitdiffPorcelain,而不影響 git-diff-files[1] 等底層指令。 diff.suppressBlankEmpty-
一個布林值,用於抑制在每個空白輸出行之前列印空格的標準行為。預設為
false。 diff.submodule-
指定顯示子模組差異的格式。
short格式僅顯示範圍開始和結束時的提交名稱。log格式列出範圍內的提交,如同 git-submodule[1]summary所做的那樣。diff格式顯示子模組已變更內容的內聯(inline)diff。預設為short。 diff.wordRegex-
用於執行逐字差異計算時確定什麼是「字」的 POSIX 擴充正規表示式。符合該正規表示式的字元序列為「字」,所有其他字元都是可忽略的空白字元。
diff.<driver>.command-
自訂 diff 驅動程式指令。請參閱 gitattributes[5] 以取得詳細資訊。
diff.<driver>.trustExitCode-
如果此布林值設為
true,則diff.<driver>.command指令預期在認為輸入檔案相等時傳回退出代碼 0,在認為不同時傳回 1,如同diff(1)。如果預設設為false,則該指令預期無論相等與否都傳回退出代碼 0。任何其他退出代碼會導致 Git 報告嚴重錯誤。 diff.<driver>.xfuncname-
diff 驅動程式應使用來識別區塊標頭(hunk header)的正規表示式。也可以使用內建模式。請參閱 gitattributes[5] 以取得詳細資訊。
diff.<driver>.binary-
將此選項設為
true可使 diff 驅動程式將檔案視為二進位。請參閱 gitattributes[5] 以取得詳細資訊。 diff.<driver>.textconv-
diff 驅動程式應呼叫以產生檔案文字轉換版本的指令。轉換的結果用於產生人類可讀的 diff。請參閱 gitattributes[5] 以取得詳細資訊。
diff.<driver>.wordRegex-
diff 驅動程式應使用來分割一行中字詞的正規表示式。請參閱 gitattributes[5] 以取得詳細資訊。
diff.<driver>.cachetextconv-
將此選項設為
true可使 diff 驅動程式快取文字轉換輸出。請參閱 gitattributes[5] 以取得詳細資訊。 diff.indentHeuristic-
將此選項設為
false以停用預設啟發式演算法,該演算法會移動 diff 區塊邊界以使修補程式更容易閱讀。 diff.algorithm-
選擇差異演算法。變體如下:
diff.wsErrorHighlight-
反白顯示 diff 中
context、old或new行中的空白字元錯誤。多個值以逗號分隔,none重設先前的值,default將列表重設為new,all是old,new,context的簡寫。空白字元錯誤以color.diff.whitespace顏色顯示。命令列選項--ws-error-highlight=<kind> 會覆蓋此設定。 diff.colorMoved-
若設為有效的 <mode> 或
true值,diff 中移動的行將以不同顏色顯示。關於有效模式的詳細資訊,請參閱 git-diff[1] 中的--color-moved。若僅設為true,將使用預設顏色模式。當設為false時,移動的行不會被著色。 diff.colorMovedWS-
當使用例如
diff.colorMoved設定對移動的行進行著色時,此選項控制處理空格的模式。關於有效模式的詳細資訊,請參閱 git-diff[1] 中的--color-moved-ws。 - diff.tool
-
控制 git-difftool[1] 使用哪種 diff 工具。此變數會覆蓋在
merge.tool中配置的值。下列表格顯示了有效的內建值。任何其他值都被視為自訂 diff 工具,並要求定義對應的 difftool.<tool>.cmd 變數。 - diff.guitool
-
控制當指定 -g/--gui 旗標時 git-difftool[1] 使用哪種 diff 工具。此變數會覆蓋在
merge.guitool中配置的值。下列表格顯示了有效的內建值。任何其他值都被視為自訂 diff 工具,並要求定義對應的 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
-
指定呼叫該 diff 工具的指令。指定的指令將在 shell 中評估,並使用以下可用變數:LOCAL 設為包含 diff 預映像(pre-image)內容的暫存檔案名稱,REMOTE 設為包含 diff 後映像(post-image)內容的暫存檔案名稱。
請參閱 git-difftool[1] 中的
--tool=<tool> 選項以取得更多詳細資訊。 - difftool.<tool>.path
-
覆蓋給定工具的路徑。如果您的工具不在 PATH 中,這非常有用。
- difftool.trustExitCode
-
如果呼叫的 diff 工具傳回非零的退出狀態,則退出 difftool。
請參閱 git-difftool[1] 中的
--trust-exit-code選項以取得更多詳細資訊。 - difftool.prompt
-
在每次呼叫 diff 工具之前提示。
- 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 儲存庫之間進行用戶端層級的互通。特別是當完全實作時,可推播(push)和拉取(pull)物件格式符合 compatObjectFormat 的儲存庫。以及除了使用以 objectFormat 編碼的 oid 外,還能使用以 compatObjectFormat 編碼的 oid 來在本地指定物件。請注意,此擴充功能啟用的功能尚未完整且可能會變更。它目前僅存在於允許開發和測試基礎功能,並非設計供終端使用者啟用。
- noop
-
此擴充功能完全不會改變 git 的行為。它僅對測試格式-1 相容性有用。
基於歷史原因,無論
core.repositoryFormatVersion設定為何,此擴充功能都會受到尊重。 - noop-v1
-
此擴充功能完全不會改變 git 的行為。它僅對測試格式-1 相容性有用。
- objectFormat
-
指定要使用的雜湊演算法。可接受的值為
sha1和sha256。若未指定,假定為sha1。請注意,此設定僅應由 git-init[1] 或 git-clone[1] 設定。初始化後嘗試更改它將不會奏效,並會產生難以診斷的問題。
- partialClone
-
啟用時,表示儲存庫是以部分複製(partial clone)建立的(或之後執行了部分提取),且遠端可能省略了發送某些不需要的物件。此類遠端稱為「承諾遠端」(promisor remote),它承諾將來可以從它那裡獲取所有這類被省略的物件。
此鍵的值為承諾遠端的名稱。
基於歷史原因,無論
core.repositoryFormatVersion設定為何,此擴充功能都會受到尊重。 - preciousObjects
-
如果啟用,表示儲存庫中的物件不得被刪除(例如,透過
git-prune或gitrepack-d)。基於歷史原因,無論
core.repositoryFormatVersion設定為何,此擴充功能都會受到尊重。 - refStorage
-
指定參照儲存格式和對應的有效負載(payload)。該值可以是格式名稱或 URI。
-
僅格式名稱(例如
reftable或files)。 -
URI 格式 <format>
://<payload> 明確指定了格式和有效負載(例如reftable:///foo/bar)。
支援的格式名稱為:
有效負載直接傳遞給參照後端。對於 files 和 reftable 後端,這必須是儲存參照的檔案系統路徑。未提供有效負載時預設為 commondir。相對路徑解析為相對於
$GIT_DIR。未來的後端可能支援其他有效負載配置,例如 postgres://127.0.0.1:5432?database=myrepo。請注意,此設定僅應由 git-init[1] 或 git-clone[1] 設定。初始化後嘗試更改它將不會奏效,並會產生難以診斷的問題。
-
- relativeWorktrees
-
如果啟用,表示至少有一個工作樹(worktree)以相對路徑連結。如果使用
--relative-paths選項或worktree.useRelativePaths配置設為true建立或修復了工作樹,則會自動設定此項。 - submodulePathConfig
-
此擴充功能適用於少數使用者,他們:
-
遇到類似
refusingtocreate...inanothersubmodule'sgitdir等錯誤,原因很多,例如建立名為foo和Foo的模組時出現不區分大小寫的檔案系統衝突。 -
需要更靈活的子模組佈局,例如由於預設 gitdir 機制(使用
.git/modules/<plain-name> 位置,導致進一步衝突)不支援foo、foo/bar和foo/baz等巢狀名稱。
當啟用
extensions.submodulePathConfig時,submodule.<name>.gitdir配置成為所有子模組 gitdir 路徑的單一事實來源,並在複製和初始化操作期間為所有新子模組自動設定。如果模組沒有對應的
submodule.<name>.gitdir設定,Git 將會錯誤退出。現有的(擴充功能前)子模組需要透過新增遺失的設定項目來遷移。這可以手動完成,例如對於每個子模組:
gitconfigsubmodule.<name>.gitdir.git/modules/<name>,或者透過gitsubmodule--helpermigrate-gitdir-configs指令完成,該指令會迭代所有子模組並嘗試遷移它們。透過將
init.defaultSubmodulePathConfig設為true(例如透過執行gitconfig--globalinit.defaultSubmodulePathConfigtrue),可以為新儲存庫自動啟用該擴充功能。 -
- worktreeConfig
-
如果啟用,則工作樹將從
$GIT_DIR/config.worktree檔案載入配置設定,除了$GIT_COMMON_DIR/config檔案之外。請注意,對於主要工作樹,$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為 true,則必須從$GIT_COMMON_DIR/config移動到$GIT_COMMON_DIR/config.worktree。
根據您對每個工作樹可自訂稀疏檢出(sparse-checkout)設定的渴望,調整
core.sparseCheckout和core.sparseCheckoutCone的位置也可能有益。預設情況下,gitsparse-checkout內建指令會啟用此擴充功能,在每個工作樹基礎上指派這些設定值,並使用$GIT_DIR/info/sparse-checkout檔案來獨立指定每個工作樹的稀疏性。請參閱 git-sparse-checkout[1] 以取得更多詳細資訊。基於歷史原因,無論
core.repositoryFormatVersion設定為何,此擴充功能都會受到尊重。 -
- fastimport.unpackLimit
-
如果 git-fast-import[1] 匯入的物件數量低於此限制,則物件將被解包(unpacked)為鬆散物件檔案。然而,如果匯入的物件數量等於或超過此限制,則封裝檔將儲存為封裝檔。從 fast-import 儲存封裝檔可以使匯入操作完成得更快,特別是在緩慢的檔案系統上。若未設定,則改用
transfer.unpackLimit的值。 - feature.*
-
以
feature.開頭的設定設定會修改一組其他設定設定的預設值。這些群組由 Git 開發人員社群建立作為推薦的預設值,且可能會變更。特別是,可能會新增具有不同預設值的新設定選項。 - feature.experimental
-
啟用 Git 新增的設定選項,並正在考慮用於未來的預設值。此處包含的設定設定可能會隨每個版本(包括次要版本更新)而新增或移除。由於這些設定非常新,可能會產生意想不到的交互作用。如果您有興趣提供有關實驗性功能的意見,請啟用此設定。新的預設值為:
-
fetch.negotiationAlgorithm=skipping可能透過每次跳過更多提交來改善提取協商時間,減少來回傳輸次數。 -
pack.useBitmapBoundaryTraversal=true可能透過遍歷更少的物件來改善點陣圖遍歷時間。 -
pack.allowPackReuse=multi可能透過重複使用來自多個封裝檔而非僅僅一個的物件,改善建立封裝檔所需的時間。 -
pack.usePathWalk可能加快封裝檔建立速度,並在出現與 Git 預設名稱雜湊的特定檔案名稱碰撞時,使封裝檔顯著變小。 -
init.defaultRefFormat=reftable導致新初始化的儲存庫使用 reftable 格式來儲存參照。這種新格式解決了不區分大小寫檔案系統的問題,壓縮效果更好,並且在許多使用情境下效能顯著更好。請參閱 Documentation/technical/reftable.adoc 以取得有關此新儲存格式的更多資訊。
-
- feature.manyFiles
-
啟用針對工作目錄中擁有許多檔案的儲存庫進行最佳化的設定選項。擁有許多檔案時,
gitstatus和gitcheckout等指令可能會變慢,這些新預設值可改善效能:-
index.skipHash=true透過不計算結尾校驗和來加快索引寫入速度。請注意,這將導致 2.13.0 之前的 Git 版本拒絕解析索引,且 2.40.0 之前的 Git 版本將在gitfsck期間報告索引損壞。 -
index.version=4啟用索引中的路徑字首壓縮。 -
core.untrackedCache=true啟用未追蹤快取。此設定假定 mtime 在您的機器上正常運作。
-
fetch.recurseSubmodules-
此選項控制
gitfetch(以及gitpull中的底層提取)是否遞迴地提取到已填充的子模組中。此選項可設為布林值或on-demand。設為布林值會將 fetch 和 pull 的行為變更為在設為 true 時無條件遞迴進入子模組,或在設為 false 時完全不遞迴。設為on-demand時,fetch 和 pull 僅會在超級專案檢索到更新子模組參照的提交時,遞迴進入已填充的子模組。預設為on-demand,若已設定則為submodule.recurse的值。 fetch.fsckObjects-
如果設為 true,git-fetch-pack 將檢查所有已提取的物件。請參閱
transfer.fsckObjects以了解檢查內容。預設為false。若未設定,則改用transfer.fsckObjects的值。 fetch.fsck.<msg-id>-
作用如同
fsck.<msg-id>,但由 git-fetch-pack[1] 而非 git-fsck[1] 使用。請參閱fsck.<msg-id> 文件以取得詳細資訊。 fetch.fsck.skipList-
作用如同
fsck.skipList,但由 git-fetch-pack[1] 而非 git-fsck[1] 使用。請參閱fsck.skipList文件以取得詳細資訊。 fetch.unpackLimit-
如果透過 Git 原生傳輸所提取的物件數量低於此限制,則物件將會被解包為鬆散物件檔案 (loose object files)。然而,如果接收到的物件數量達到或超過此限制,則接收到的封裝檔 (pack) 將會被直接儲存為一個封裝檔,並在新增任何缺失的差異基準 (delta bases) 後進行儲存。儲存推送來的封裝檔可以讓推送操作更快完成,尤其是在較慢的檔案系統上。如果未設定,則會使用
transfer.unpackLimit的值來代替。 fetch.prune-
如果設為 true,fetch 將會自動表現得如同在命令列中給定了
--prune選項一樣。另請參閱remote.<name>.prune以及 git-fetch[1] 中的 PRUNING 章節。 fetch.pruneTags-
如果設為 true,在進行修剪 (pruning) 時,fetch 將會自動表現得如同提供了
refs/tags/*:refs/tags/*參照規格 (refspec) 一樣(如果尚未設定的話)。這允許同時設定此選項與fetch.prune,以維持與上游參照的 1 對 1 對應。另請參閱remote.<name>.pruneTags以及 git-fetch[1] 中的 PRUNING 章節。 fetch.all-
如果設為 true,fetch 將嘗試更新所有可用的遠端倉庫。此行為可以透過傳入
--no-all或明確指定一個或多個要提取的遠端倉庫來覆蓋。預設值為false。 fetch.output-
控制如何列印參照更新狀態。有效值為
full和compact。預設值為full。詳情請參閱 git-fetch[1] 中的 OUTPUT 章節。 fetch.negotiationAlgorithm-
控制在協商伺服器將傳送的封裝檔 (packfile) 內容時,如何發送本地倉庫的提交資訊。設為
consecutive以使用遍歷連續提交並逐一檢查的演算法。設為skipping以使用跳過提交的演算法,以期更快收斂,但可能會導致封裝檔大於必要大小;或設為noop以完全不發送任何資訊,這幾乎肯定會導致封裝檔大於必要大小,但會跳過協商步驟。設為default以覆蓋先前設定並使用預設行為。預設值通常為consecutive,但如果feature.experimental為true,則預設值為skipping。無效值將導致gitfetch報錯。另請參閱 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 以在每次從遠端下載封裝檔的
gitfetch指令後寫入提交圖 (commit-graph)。使用--split選項時,大多數執行將在現有的提交圖檔案之上建立一個非常小的提交圖檔案。偶爾,這些檔案會合併,寫入可能需要較長時間。擁有更新的提交圖檔案有助於許多 Git 指令的效能,包括gitmerge-base、gitpush-f和gitlog--graph。預設值為false。 fetch.bundleURI-
此值儲存了一個 URI,用於在從原始 Git 伺服器進行增量提取之前,從 Bundle URI 下載 Git 物件資料。這類似於 git-clone[1] 中的
--bundle-uri選項的行為。如果提供的 Bundle URI 包含為增量提取而組織的 Bundle 列表,則gitclone--bundle-uri將會設定fetch.bundleURI的值。如果您修改此值,且您的倉庫擁有
fetch.bundleCreationToken值,請在從新的 Bundle URI 提取之前移除該fetch.bundleCreationToken值。 fetch.bundleCreationToken-
當使用
fetch.bundleURI從使用 "creationToken" 啟發式 (heuristic) 的 Bundle 列表進行增量提取時,此設定值儲存了已下載 Bundle 的最大creationToken值。如果宣告的creationToken不嚴格大於此值,此值將用於防止未來下載 Bundle。建立令牌 (creation token) 的值是由提供特定 Bundle URI 的服務商所選擇的。如果您修改了
fetch.bundleURI的 URI,請務必在提取前移除fetch.bundleCreationToken的值。 - filter.<driver>.clean
-
在檢入 (checkin) 時,將工作樹檔案內容轉換為 blob 的指令。詳情請參閱 gitattributes[5]。
- filter.<driver>.smudge
-
在檢出 (checkout) 時,將 blob 物件內容轉換為工作樹檔案的指令。詳情請參閱 gitattributes[5]。
- format.attach
-
啟用 multipart/mixed 附件作為 format-patch 的預設值。該值也可以是一個以雙引號括起來的字串,這將啟用附件作為預設值並將該值設為邊界 (boundary)。參見 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 的預設模式,用於決定封面信 (cover letter) 的哪些部分將使用分支的描述來填充。參見 git-format-patch[1] 中的
--cover-from-description選項。 - format.signature
-
format-patch 的預設值是輸出包含 Git 版本號的簽名。使用此變數來更改該預設值。將此變數設為空字串 ("") 可抑制簽名生成。
- format.signatureFile
-
功能與 format.signature 相同,除了此變數指定的檔案內容將作為簽名。
- format.suffix
-
format-patch 的預設值是輸出帶有
.patch後綴的檔案。使用此變數來更改該後綴(如果您需要點號,請確保包含它)。 - format.encodeEmailHeaders
-
使用 "Q-encoding"(在 RFC 2047 中描述)對包含非 ASCII 字元的電子郵件標頭進行編碼,以進行電子郵件傳輸。預設值為 true。
- format.pretty
-
log/show/whatchanged 指令的預設簡美格式 (pretty format)。參見 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.commitListFormat
-
當未給定
--cover-letter-format選項時,format-patch使用此變數的值來決定如何格式化每個提交的條目。預設值為shortlog。 - format.outputDirectory
-
設定自訂目錄以儲存產生的檔案,而不是目前的的工作目錄。所有目錄組件都將被建立。
- format.filenameMaxLength
-
format-patch指令所產生的輸出檔案名稱的最大長度;預設為 64。可透過命令列選項--filename-max-length=<n> 覆蓋。 - format.useAutoBase
-
一個布林值,讓您預設啟用 format-patch 的
--base=auto選項。也可以設為 "whenAble",允許在有合適基準 (base) 可用的情況下啟用--base=auto,否則在不中止格式化的情況下跳過添加基準資訊。 - format.notes
-
為 format-patch 的
--notes選項提供預設值。接受布林值或指定從何處獲取筆記的參照 (ref)。如果為 false,format-patch 預設為--no-notes。如果為 true,format-patch 預設為--notes。如果設為非布林值,format-patch 預設為--notes=<ref>,其中ref為該非布林值。預設值為 false。如果希望使用參照
refs/notes/true,請使用該字面量。此配置可以多次指定,以允許包含多個筆記參照。在這種情況下,它的行為將類似於傳入多個
--[no-]notes[=] 選項。也就是說,值true將顯示預設筆記,值 <ref> 也將顯示來自該筆記參照的筆記,而值false將抵銷先前的配置而不顯示筆記。例如,
[format] notes = true notes = foo notes = false notes = bar
將僅顯示來自
refs/notes/bar的筆記。 - format.mboxrd
-
一個布林值,在使用
--stdout時啟用強健的 "mboxrd" 格式,以轉義 "^>+From " 行。 - format.noprefix
-
如果設定,補丁中將不顯示任何來源或目標字首。這等同於
gitdiff使用的diff.noprefix選項(但format-patch不會遵從後者)。請注意,透過設定此項,您生成的任何補丁的接收者都必須使用-p0選項來應用它們。 - fsck.<msg-id>
-
在 fsck 期間,git 可能會發現舊版資料的問題,這些問題不會由當前版本的 git 生成,也不會在
transfer.fsckObjects設定時透過網路傳送。此功能旨在支援處理包含此類資料的舊版倉庫。設定
fsck.<msg-id> 將被 git-fsck[1] 採用,但若要接受此類資料的推送,請改為設定receive.fsck.<msg-id>,或者若要複製 (clone) 或提取 (fetch) 此類資料,請設定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] 的
FsckMessages章節。 - 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 版本之後,改用了雜湊 (hash) 實現,因此現在沒有理由預先排序列表。
- fsmonitor.allowRemote
-
預設情況下,fsmonitor 守護行程拒絕與網路掛載的倉庫一起工作。將
fsmonitor.allowRemote設為true可覆蓋此行為。僅在core.fsmonitor設為true時生效。 - fsmonitor.socketDir
-
此 Mac OS 特有的選項(若已設定)指定了用於 fsmonitor 守護行程與各種 Git 指令之間通訊的 Unix 網域通訊端 (Unix domain socket) 建立目錄。該目錄必須位於原生 Mac OS 檔案系統上。僅在
core.fsmonitor設為true時生效。 - gc.aggressiveDepth
-
git gc --aggressive 所使用的差異壓縮演算法中的深度參數。預設為 50,這也是未使用
--aggressive時--depth選項的預設值。更多詳細資訊,請參閱 git-repack[1] 中
--depth選項的說明文件。 - gc.aggressiveWindow
-
git gc --aggressive 所使用的差異壓縮演算法中的視窗大小參數。預設為 250,這是一個比預設的
--window值 10 更積極的視窗大小。更多詳細資訊,請參閱 git-repack[1] 中
--window選項的說明文件。 - gc.auto
-
當倉庫中的鬆散物件大約超過此數量時,
gitgc--auto將會對其進行封裝。某些 Porcelain 指令會使用此指令不時執行輕量級垃圾回收。預設值為 6700。將此值設為 0 不僅會停用基於鬆散物件數量的自動封裝,還會停用
gitgc--auto可能用來判斷是否有工作要做的任何其他啟發式方法,例如gc.autoPackLimit。 - gc.autoPackLimit
-
當倉庫中未標記
*.keep檔案的封裝檔數量超過此值時,gitgc--auto會將它們合併成一個較大的封裝檔。預設值為 50。將此值設為 0 可停用此功能。將gc.auto設為 0 也會停用此功能。請參閱下方的
gc.bigPackThreshold配置變數。使用時,它會影響自動封裝限制的運作方式。 - gc.autoDetach
-
如果系統支援,使
gitgc--auto立即返回並在後台執行。預設值為 true。若未設定maintenance.autoDetach,此配置變數將作為後備。 - gc.bigPackThreshold
-
如果為非零值,當執行
gitgc時,所有大於此限制的非 cruft 封裝檔都會被保留。這與--keep-largest-pack非常相似,除了所有符合閾值的非 cruft 封裝檔都會被保留,而不僅僅是最大的封裝檔。預設值為 0。支援 k、m 或 g 等常見單位後綴。請注意,如果保留的封裝檔數量超過 gc.autoPackLimit,此配置變數將被忽略,除了基礎封裝檔之外的所有封裝檔都將被重新封裝。之後封裝檔數量應該會低於 gc.autoPackLimit,且 gc.bigPackThreshold 應該會再次被遵從。
如果
gitrepack平穩執行所需的估計記憶體不可用,且未設定gc.bigPackThreshold,則最大的封裝檔也將被排除(這等同於使用--keep-largest-pack執行gitgc)。 - gc.writeCommitGraph
-
如果為 true,則執行 git-gc[1] 時,gc 會重寫提交圖檔案。當使用
gitgc--auto時,如果需要內務處理,提交圖將會更新。預設值為 true。詳情請參閱 git-commit-graph[1]。 - gc.logExpiry
-
如果 gc.log 檔案存在,則
gitgc--auto將列印其內容並以狀態碼 0 退出,而不是執行 gc 操作,除非該檔案的時間超過 gc.logExpiry。預設值為 "1.day"。有關指定其值的更多方法,請參閱gc.pruneExpire。 - gc.packRefs
-
在倉庫中執行
gitpack-refs會使其無法被 1.5.1.2 之前的 Git 版本透過 HTTP 等笨傳輸 (dumb transports) 進行複製。此變數決定 git gc 是否執行gitpack-refs。可以將其設為notbare以在所有非 bare 倉庫中啟用它,或者設為布林值。預設值為true。 - gc.cruftPacks
-
將無法存取的物件儲存在 cruft pack 中(參見 git-repack[1]),而不是作為鬆散物件。預設值為
true。 - gc.maxCruftSize
-
重新封裝時限制新的 cruft pack 的大小。當與
--max-cruft-size一起指定時,命令列選項優先。參見 git-repack[1] 的--max-cruft-size選項。 - gc.pruneExpire
-
執行 git gc 時,它將呼叫 prune --expire 2.weeks.ago(如果透過
gc.cruftPacks或--cruft使用 cruft packs,則為 repack --cruft --cruft-expiration 2.weeks.ago)。使用此配置變數覆蓋寬限期。值 "now" 可用於停用此寬限期並始終立即修剪無法存取的物件,或者 "never" 可用於抑制修剪。此功能有助於在 git gc 與另一個向倉庫寫入的程序並行執行時防止損壞;請參閱 git-gc[1] 的 "NOTES" 章節。 - gc.worktreePruneExpire
-
當執行 git gc 時,它會呼叫 git worktree prune --expire 3.months.ago。此配置變數可用於設定不同的寬限期。值 "now" 可用於停用寬限期並立即修剪
$GIT_DIR/worktrees,或者 "never" 可用於抑制修剪。 - gc.reflogExpire
- gc.<pattern>.reflogExpire
-
git reflog expire 刪除早於此時間的 reflog 條目;預設為 90 天。值 "now" 立即使所有條目過期,"never" 則完全抑制過期。中間帶有 "<pattern>"(例如 "refs/stash")時,該設定僅適用於符合該 <pattern> 的參照。
- gc.reflogExpireUnreachable
- gc.<pattern>.reflogExpireUnreachable
-
git reflog expire 刪除早於此時間且無法從當前頂端 (tip) 存取的 reflog 條目;預設為 30 天。值 "now" 立即使所有條目過期,"never" 則完全抑制過期。中間帶有 "<pattern>"(例如 "refs/stash")時,該設定僅適用於符合該 <pattern> 的參照。
這類條目通常是因使用
gitcommit--amend或gitrebase而產生的,且為修正或變基 (rebase) 發生前的提交。由於這些變更不是當前專案的一部分,大多數使用者會希望更快使它們過期,這就是為什麼預設值比gc.reflogExpire更積極的原因。 - gc.recentObjectsHook
-
在考慮是否移除物件(無論是在生成 cruft pack 還是將無法存取的物件儲存為鬆散物件時)時,使用 shell 執行指定的指令。將其輸出解釋為 Git 將視為 "最近" 的物件 ID,無論其年齡如何。透過將其 mtime 視為 "now",輸出中提到的任何物件(及其後代)都將被保留,無論其真實年齡如何。
輸出必須每行精確包含一個十六進位物件 ID,且不含其他內容。倉庫中找不到的物件將被忽略。支援多個 Hook,但所有 Hook 都必須成功退出,否則操作(生成 cruft pack 或解包無法存取的物件)將被中止。
- gc.repackFilter
-
重新封裝時,使用指定的過濾器將某些物件移至單獨的封裝檔。參見 git-repack[1] 的
--filter=<filter-spec> 選項。 - gc.repackFilterTo
-
重新封裝並使用過濾器時,請參閱
gc.repackFilter,指定的目錄將用於建立包含過濾後物件的封裝檔。警告:指定的目錄應該是可存取的,例如使用 Git alternates 機制,否則 Git 可能認為倉庫已損壞,因為它可能無法存取該封裝檔中的物件。參見 git-repack[1] 的--filter-to=<dir> 選項以及 gitrepository-layout[5] 的objects/info/alternates章節。 - gc.rerereResolved
-
當執行 git rerere gc 時,您先前解決的衝突合併記錄將保留此天數。您也可以使用更具可讀性的 "1.month.ago" 等。預設為 60 天。參見 git-rerere[1]。
- gc.rerereUnresolved
-
當執行 git rerere gc 時,您尚未解決的衝突合併記錄將保留此天數。您也可以使用更具可讀性的 "1.month.ago" 等。預設為 15 天。參見 git-rerere[1]。
- gitcvs.commitMsgAnnotation
-
將此字串附加到每個提交訊息。設為空字串可停用此功能。預設為 "via git-CVS emulator"。
- gitcvs.enabled
-
此倉庫是否啟用了 CVS 伺服器介面。參見 git-cvsserver[1]。
- gitcvs.logFile
-
CVS 伺服器介面記錄各種事務的日誌檔案路徑。參見 git-cvsserver[1]。
- gitcvs.usecrlfattr
-
如果為 true,伺服器將查詢檔案的行尾轉換屬性以決定要使用的
-k模式。如果屬性強迫 Git 將檔案視為文字,則-k模式將保持空白,以便 CVS 用戶端將其視為文字。如果它們抑制文字轉換,檔案將以 -kb 模式設定,這會抑制用戶端可能執行的任何換行符修改。如果屬性無法判斷檔案類型,則使用gitcvs.allBinary。參見 gitattributes[5]。 - gitcvs.allBinary
-
如果
gitcvs.usecrlfattr無法解析正確的 -kb 模式,則使用此項。如果為 true,所有未解析的檔案都將以 -kb 模式傳送到用戶端。這導致用戶端將其視為二進位檔案,抑制其可能執行的任何換行符修改。或者,如果設為 "guess",則檢查檔案內容以決定其是否為二進位,類似於core.autocrlf。 - gitcvs.dbName
-
git-cvsserver 用於快取從 Git 倉庫導出的修訂資訊的資料庫。確切含義取決於所使用的資料庫驅動程式,對於 SQLite(預設驅動程式),這是一個檔案名稱。支援變數替換(詳情參見 git-cvsserver[1])。不得包含分號 (;)。預設值:%Ggitcvs.%m.sqlite
- gitcvs.dbDriver
-
使用的 Perl DBI 驅動程式。您可以在此指定任何可用驅動程式,但不保證能運作。git-cvsserver 已使用 DBD::SQLite 進行測試,據報可與 DBD::Pg 搭配使用,且據報不支援 DBD::mysql。實驗性功能。不得包含雙冒號 (
:)。預設值:SQLite。參見 git-cvsserver[1]。 - gitcvs.dbUser
- gitcvs.dbPass
-
資料庫使用者與密碼。僅在設定
gitcvs.dbDriver時有用,因為 SQLite 沒有資料庫使用者和/或密碼的概念。gitcvs.dbUser 支援變數替換(詳情參見 git-cvsserver[1])。 - gitcvs.dbTableNamePrefix
-
資料庫資料表名稱字首。加在任何使用的資料庫資料表名稱前,允許單個資料庫用於多個倉庫。支援變數替換(詳情參見 git-cvsserver[1])。任何非字母字元將被替換為底線。
除 gitcvs.usecrlfattr 和 gitcvs.allBinary 外,所有 gitcvs 變數也可以指定為 gitcvs.<access_method>.<varname>(其中 access_method 為 "ext" 或 "pserver" 之一),以使其僅適用於給定的存取方法。
- gitweb.category
- gitweb.description
- gitweb.owner
- gitweb.url
-
描述請參閱 gitweb[1]。
- gitweb.avatar
- gitweb.blame
- gitweb.grep
- gitweb.highlight
- gitweb.patches
- gitweb.pickaxe
- gitweb.remote_heads
- gitweb.showSizes
- gitweb.snapshot
-
描述請參閱 gitweb.conf[5]。
- gpg.program
-
在製作或驗證 PGP 簽名時,用於代替 "
gpg" 的程式路徑。該程式必須支援與 GPG 相同的命令列介面,即執行 "gpg --verify $signature - <$file" 來驗證分離簽名 (detached signature),且預期該程式透過以退出碼 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 公鑰的檔案。該檔案由一行或多行主體 (principals) 後跟一個 ssh 公鑰組成。例如:
user1@example.com,user2@example.comssh-rsaAAAAX1...詳情參見 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 倉庫外執行
gitgrep時,回退至gitgrep--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 呼叫
ShowHistoryContext選單項目時,在 gitk[1] 中為所選提交顯示的歷史上下文半徑(以天為單位)。如果此變數設為 0,則顯示整個歷史記錄。 - gui.GCWarning
-
決定當 git 偵測到倉庫中有大量鬆散物件時,git-gui[1] 是否應提示進行垃圾回收。預設值為 "true"。
- 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 sec) 後執行建議的指令。
-
"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 Basic 驗證 -
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
-
為代理 SSL 憑證啟用 Git 的密碼提示。否則,如果憑證或私鑰已加密,OpenSSL 將多次提示使用者。可由
GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED環境變數覆蓋。 - http.proxySSLCAInfo
-
包含憑證包的檔案路徑,該憑證包用於在使用 HTTPS 代理時驗證代理。可由
GIT_PROXY_SSL_CAINFO環境變數覆蓋。 - http.emptyAuth
-
嘗試驗證而不尋求使用者名稱或密碼。這可用於在不指定 URL 中的使用者名稱的情況下嘗試 GSS-Negotiate 驗證,因為 libcurl 通常需要驗證使用者名稱。
- http.proactiveAuth
-
嘗試驗證而不先進行未經驗證的嘗試並收到 401 回應。這可用於確保所有請求都經過驗證。如果
http.emptyAuth設為 true,則此值無效。如果所使用的憑證輔助程式 (credential helper) 指定了驗證方案(即透過
authtype欄位),則將使用該值;如果提供了沒有方案的使用者名稱和密碼,則使用 Basic 驗證。該選項的值決定了向輔助程式請求的方案。可能的值為:-
basic- 向輔助程式請求 Basic 驗證。 -
auto- 允許輔助程式選擇合適的方案。 -
none- 停用主動驗證。
注意,此配置應始終與 TLS 一起使用,否則如果選擇 Basic 驗證,很容易意外暴露明文憑證。
-
- http.delegation
-
控制 GSSAPI 憑證委派 (delegation)。libcurl 自 7.21.7 版本起預設停用委派。設定參數以告知伺服器在使用者憑證方面允許委派的內容。與 GSS/kerberos 一起使用。可能的值為:
-
none- 不允許任何委派。 -
policy- 僅在 Kerberos 服務票證中設定了 OK-AS-DELEGATE 旗標時才委派,這取決於 realm 策略。 -
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
-
傳送 HTTP 請求時 libcurl 將首先使用的主機名稱解析資訊。此資訊應採用以下格式之一:
-
[+]HOST:PORT:ADDRESS[,ADDRESS]
-
-HOST:PORT
第一種格式將所有對給定
HOST:PORT的請求重導向到提供的ADDRESS。第二種格式清除該HOST:PORT組合的所有先前配置值。為了允許輕鬆覆蓋從系統配置繼承的所有設定,空值將重設所有解析資訊為空列表。 -
- http.sslVersion
-
在協商 SSL 連線時要使用的 SSL 版本,如果您想強制使用預設值。可用且預設的版本取決於 libcurl 是針對 NSS 還是 OpenSSL 建構的,以及所使用的加密庫的特定配置。在內部,這會設定 CURLOPT_SSL_VERSION 選項;有關此選項格式的詳細資訊以及支援的 ssl 版本,請參閱 libcurl 文件。目前此選項的可能值為:
-
sslv2
-
sslv3
-
tlsv1
-
tlsv1.0
-
tlsv1.1
-
tlsv1.2
-
tlsv1.3
可由
GIT_SSL_VERSION環境變數覆蓋。若要強制 git 使用 libcurl 的預設 ssl 版本並忽略任何顯式的 http.sslversion 選項,請將GIT_SSL_VERSION設為空字串。 -
- http.sslCipherList
-
協商 SSL 連線時使用的 SSL 密碼列表。可用密碼取決於 libcurl 是針對 NSS 還是 OpenSSL 建構的,以及所使用的加密庫的特定配置。在內部,這會設定 CURLOPT_SSL_CIPHER_LIST 選項;有關此列表格式的詳細資訊,請參閱 libcurl 文件。
可由
GIT_SSL_CIPHER_LIST環境變數覆蓋。若要強制 git 使用 libcurl 的預設密碼列表並忽略任何顯式的 http.sslCipherList 選項,請將GIT_SSL_CIPHER_LIST設為空字串。 - http.sslVerify
-
透過 HTTPS 提取或推送時是否驗證 SSL 憑證。預設值為 true。可由
GIT_SSL_NO_VERIFY環境變數覆蓋。 - http.sslCert
-
透過 HTTPS 提取或推送時包含 SSL 憑證的檔案。可由
GIT_SSL_CERT環境變數覆蓋。 - http.sslKey
-
透過 HTTPS 提取或推送時包含 SSL 私鑰的檔案。可由
GIT_SSL_KEY環境變數覆蓋。 - http.sslCertPasswordProtected
-
為 SSL 憑證啟用 Git 的密碼提示。否則,如果憑證或私鑰已加密,OpenSSL 將多次提示使用者。可由
GIT_SSL_CERT_PASSWORD_PROTECTED環境變數覆蓋。 - http.sslCAInfo
-
透過 HTTPS 提取或推送時包含驗證對等方的憑證檔案。可由
GIT_SSL_CAINFO環境變數覆蓋。 - http.sslCAPath
-
透過 HTTPS 提取或推送時包含驗證對等方的 CA 憑證檔案的路徑。可由
GIT_SSL_CAPATH環境變數覆蓋。 - http.sslBackend
-
要使用的 SSL 後端名稱(例如 "openssl" 或 "schannel")。如果 cURL 不支援在執行時選擇 SSL 後端,則此選項會被忽略。
- http.sslCertType
-
透過 HTTPS 提取或推送時使用的用戶端憑證類型。使用 openssl 或 gnutls 後端時支援 "PEM"、"DER"。在 "openssl"、"schannel"、"securetransport" 和 gnutls 8.11+ 上支援 "P12"。另參見 libcurl
CURLOPT_SSLCERTTYPE。可由GIT_SSL_CERT_TYPE環境變數覆蓋。 - http.sslKeyType
-
透過 HTTPS 提取或推送時使用的用戶端私鑰類型(例如 "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 憑證存放區。由於這在預設情況下並不理想,當透過http.sslBackend配置了schannel後端時,Git 預設會告知 cURL 不要使用該憑證包,除非http.schannelUseSSLCAInfo覆蓋此行為。 - http.pinnedPubkey
-
https 服務的公鑰。它可以是 PEM 或 DER 編碼公鑰檔案的檔案名稱,也可以是以 sha256// 開頭,後跟公鑰的 base64 編碼 sha256 雜湊的字串。另參見 libcurl CURLOPT_PINNEDPUBLICKEY。如果設定此選項但 cURL 不支援,git 將以錯誤退出。
- http.sslTry
-
透過常規 FTP 協定連線時,嘗試使用 AUTH SSL/TLS 和加密資料傳輸。如果 FTP 伺服器因安全原因要求這樣做,或者您希望在遠端 FTP 伺服器支援時始終安全連線,則可能需要這樣做。預設值為 false,因為它可能會在配置錯誤的伺服器上引發憑證驗證錯誤。
- http.maxRequests
-
同時啟動的 HTTP 請求數量。可由
GIT_HTTP_MAX_REQUESTS環境變數覆蓋。預設值為 5。 - http.minSessions
-
在請求之間保留的 curl 會話數量(跨槽位計算)。在呼叫 http_cleanup() 之前,它們不會以 curl_easy_cleanup() 結束。如果未定義 USE_CURL_MULTI,此值將被限制為 1。預設值為 1。
- http.postBuffer
-
智慧 HTTP 傳輸在將資料 POST 到遠端系統時所使用的緩衝區最大位元組大小。對於大於此緩衝區大小的請求,使用 HTTP/1.1 和 Transfer-Encoding: chunked,以避免在本地建立巨大的封裝檔。預設值為 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 keepalive 探測(如果 OS 支援)之前,在閒置連線上等待的秒數。如果未設定,則使用 curl 的預設值。可由
GIT_HTTP_KEEPALIVE_IDLE環境變數覆蓋。 - http.keepAliveInterval
-
指定 TCP keepalive 探測之間等待的秒數(如果 OS 支援)。如果未設定,則使用 curl 的預設值。可由
GIT_HTTP_KEEPALIVE_INTERVAL環境變數覆蓋。 - http.keepAliveCount
-
指定在放棄並終止連線之前發送多少個 TCP keepalive 探測(如果 OS 支援)。如果未設定,則使用 curl 的預設值。可由
GIT_HTTP_KEEPALIVE_COUNT環境變數覆蓋。 - http.retryAfter
-
當伺服器返回 HTTP 429(請求過多)且沒有
Retry-After標頭時,預設的重試等待秒數。預設值為 0(立即重試)。當存在Retry-After標頭時,其值優先於此設定;然而,自動使用伺服器提供的Retry-After標頭需要 libcurl 7.66.0 或更高版本。在舊版本上,請手動配置此設定以控制重試延遲。可由GIT_HTTP_RETRY_AFTER環境變數覆寫。另請參閱http.maxRetries和http.maxRetryTime。 - http.maxRetries
-
接收到 HTTP 429(請求過多)回應後的最大重試次數。設為 0(預設值)以停用重試。可由
GIT_HTTP_MAX_RETRIES環境變數覆寫。另請參閱http.retryAfter和http.maxRetryTime。 - http.maxRetryTime
-
處理 HTTP 429(請求過多)回應時,單次重試嘗試的最大等待秒數。如果伺服器請求延遲(透過 Retry-After 標頭),或者如果
http.retryAfter設定的值超過此最大值,Git 將立即失敗而不是等待。預設為 300 秒(5 分鐘)。可由GIT_HTTP_MAX_RETRY_TIME環境變數覆寫。另請參閱http.retryAfter和http.maxRetries。 - http.noEPSV
-
一個布林值,用於停用 curl 使用 EPSV FTP 指令。這對於某些不支援 EPSV 模式的「拙劣」FTP 伺服器很有幫助。可由
GIT_CURL_FTP_NO_EPSV環境變數覆寫。預設為 false(curl 將使用 EPSV)。 - http.userAgent
-
提供給 HTTP 伺服器的 HTTP USER_AGENT 字串。預設值代表 Git 用戶端的版本,例如 git/1.7.1。此選項允許您將此值覆寫為更常見的值,例如 Mozilla/4.0。例如,如果您透過防火牆連線,而該防火牆限制 HTTP 連線僅能使用一組常見的 USER_AGENT 字串(但不包含像 git/1.7.1 這類字串),這可能是必要的。可由
GIT_HTTP_USER_AGENT環境變數覆寫。 - http.followRedirects
-
Git 是否應該遵循 HTTP 重新導向。如果設為
true,Git 將透明地遵循伺服器遇到的任何重新導向。如果設為false,Git 將把所有重新導向視為錯誤。如果設為initial,Git 將僅針對遠端的初始請求遵循重新導向,但不會針對後續的跟進 HTTP 請求。由於 Git 使用重新導向後的 URL 作為後續請求的基礎,這通常已足夠。預設值為initial。 - http.<url>.*
-
上述任何 http.* 選項都可以選擇性地應用於某些 URL。為了讓設定鍵與 URL 匹配,設定鍵的每個元素會依以下順序與 URL 的對應元素進行比較:
-
Scheme(例如
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 之間完全匹配。在匹配前,省略的連接埠號會自動轉換為該 scheme 的正確預設值。 -
路徑(例如
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
-
放置郵件的資料夾,通常是 Drafts 資料夾。例如:
INBOX.Drafts、INBOX/Drafts或 [Gmail]/Drafts。必須指定要與之互動的 IMAP 資料夾;當未提供--folder選項時,此配置變數的值將用作後備預設值。 - 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
-
一個布林值,用於啟用/停用傳送修補檔 (patch) 時使用 HTML 編碼。以 HTML 編碼的修補檔將會被 <pre> 標籤包圍,並具有 text/html 的內容類型。具有諷刺意味的是,啟用此選項會導致 Thunderbird 將修補檔作為 plain/text, format=fixed 的電子郵件傳送。預設值為
false。 - imap.authMethod
-
指定用於驗證 IMAP 伺服器的驗證方法。如果 Git 是在編譯時帶有 NO_CURL 選項,或者您的 curl 版本早於 7.34.0,或者您以
--no-curl選項執行 git-imap-send,則唯一支援的方法是PLAIN、CRAM-MD5、OAUTHBEARER和XOAUTH2。如果未設定此項,則gitimap-send會使用基本的 IMAP 純文字LOGIN指令。 - include.path
- includeIf.<condition>.path
-
用於包含其他設定檔的特殊變數。請參閱主 git-config[1] 文件中的「CONFIGURATION FILE」章節,特別是「Includes」和「Conditional Includes」小節。
- index.recordEndOfIndexEntries
-
指定索引檔是否應包含「索引條目結尾 (End Of Index Entry)」區段。這會減少多處理器機器上的索引載入時間,但在使用舊於 2.20 的 Git 版本讀取索引時,會產生「ignoring EOIE extension」的訊息。如果已明確啟用 index.threads,則預設為 true,否則為 false。
- index.recordOffsetTable
-
指定索引檔是否應包含「索引條目偏移表 (Index Entry Offset Table)」區段。這會減少多處理器機器上的索引載入時間,但在使用舊於 2.20 的 Git 版本讀取索引時,會產生「ignoring IEOT extension」的訊息。如果已明確啟用 index.threads,則預設為 true,否則為 false。
- index.sparse
-
啟用時,使用稀疏目錄 (sparse-directory) 條目寫入索引。除非同時啟用
core.sparseCheckout和core.sparseCheckoutCone,否則此設定無效。預設為 false。 - index.threads
-
指定載入索引時要建立的執行緒數量。這旨在減少多處理器機器上的索引載入時間。指定 0 或 true 將導致 Git 自動偵測 CPU 數量並相應設定執行緒數量。指定 1 或 false 將停用多執行緒。預設為 true。
- index.version
-
指定初始化新索引檔時的版本。這不會影響現有的儲存庫。如果啟用了
feature.manyFiles,則預設值為 4。 - index.skipHash
-
啟用時,不要計算索引檔的結尾雜湊值。這會加速操作索引的 Git 指令,例如
gitadd、gitcommit或gitstatus。不儲存校驗和,而是寫入一組值為零的結尾位元組,表示已跳過計算。如果您啟用
index.skipHash,則舊於 2.13.0 的 Git 用戶端將拒絕解析索引,且舊於 2.40.0 的 Git 用戶端在執行gitfsck時會報告錯誤。
init.templateDir-
指定複製範本的目錄。(請參閱 git-init[1] 的「TEMPLATE DIRECTORY」章節。)
init.defaultBranch-
允許覆寫預設分支名稱,例如在初始化新版本庫時。
init.defaultObjectFormat-
允許為新版本庫覆寫預設物件格式。請參閱 git-init[1] 中的
--object-format=。命令列選項和GIT_DEFAULT_HASH環境變數的優先級皆高於此設定。 init.defaultRefFormat-
允許為新版本庫覆寫預設參照(ref)儲存格式。請參閱 git-init[1] 中的
--ref-format=。命令列選項和GIT_DEFAULT_REF_FORMAT環境變數的優先級皆高於此設定。 - init.defaultSubmodulePathConfig
-
一個布林值,指定
gitinit和gitclone是否應自動將extensions.submodulePathConfig設定為true。這允許所有新版本庫自動使用子模組路徑擴充功能。未設定時預設為false。 - instaweb.browser
-
指定用於在 gitweb 中瀏覽工作儲存庫的程式。請參閱 git-instaweb[1]。
- instaweb.httpd
-
在工作儲存庫上啟動 gitweb 的 HTTP 常駐程式命令列。請參閱 git-instaweb[1]。
- instaweb.local
-
如果為 true,則由 git-instaweb[1] 啟動的網頁伺服器將綁定到本機 IP (127.0.0.1)。
- instaweb.modulePath
-
供 git-instaweb[1] 使用的預設模組路徑,用以取代 /usr/lib/apache2/modules。僅在 httpd 為 Apache 時使用。
- instaweb.port
-
要綁定 gitweb httpd 的連接埠號。請參閱 git-instaweb[1]。
- interactive.singleKey
-
當設為 true 時,允許使用者在互動式指令中使用單一按鍵(即無需按下 Enter 鍵)提供單字元輸入。這目前用於 git-add[1]、git-checkout[1]、git-restore[1]、git-commit[1]、git-reset[1] 和 git-stash[1] 的
--patch模式。 - interactive.diffFilter
-
當互動式指令(例如
gitadd--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 的值類似於使用gitlog的--date選項。詳情請參閱 git-log[1]。如果格式設為 "auto:foo" 且正在使用分頁器,則日期格式將使用 "foo" 格式。否則,將使用 "default"。
log.decorate-
列印 log 指令所顯示的任何提交的參照名稱 (ref names)。可能的值有:
這與
gitlog的--decorate選項相同。 log.initialDecorationSet-
預設情況下,
gitlog僅顯示某些已知參照命名空間的修飾。如果指定 all,則顯示所有參照作為修飾。 log.excludeDecoration-
從 log 修飾中排除指定的模式。這類似於
--decorate-refs-exclude指令列選項,但設定選項可以被--decorate-refs選項覆寫。 log.diffMerges-
設定指定
--diff-merges=on時使用的差異格式,詳情請參閱 git-log[1] 中的--diff-merges。預設為separate。 log.follow-
如果
true,當給定單一 <path> 時,gitlog的行為就像使用了--follow選項一樣。這具有與--follow相同的限制,即它不能用於追蹤多個檔案,且在非線性歷史記錄上效果不佳。 log.graphColors-
用於在
gitlog--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中的條目優先。在裸 (bare) 儲存庫中,預設為HEAD:.mailmap。在非裸儲存庫中,預設為空。 - maintenance.auto
-
此布林設定選項控制某些指令在完成正常工作後是否執行
gitmaintenancerun--auto。預設為 true。 - maintenance.autoDetach
-
許多 Git 指令在將資料寫入儲存庫後會觸發自動維護。此布林設定選項控制此自動維護應在前台發生,還是維護程序應分離並繼續在背景執行。
如果未設定,則使用
gc.autoDetach的值作為備選。如果兩者都未設定,則預設為 true,意味著維護程序將會分離。 - maintenance.strategy
-
此字串設定選項提供了一種指定幾種建議的儲存庫維護策略之一的方法。這會影響
gitmaintenancerun期間執行哪些任務(前提是沒有提供--task=<task> 引數)。此設定會影響手動維護、自動維護以及排程維護。執行的任務可能會根據維護類型而有所不同。可以透過設定
maintenance.<task>.enabled和maintenance.<task>.schedule來進一步調整維護策略。如果設定了這些值,將使用這些值來取代maintenance.strategy提供的預設值。可能的策略有:
-
none:此策略意味著完全不執行任何任務。這是排程維護的預設策略。 -
gc:此策略執行gc任務。 -
geometric:此策略執行封裝檔的幾何重包 (geometric repacking) 並使輔助資料結構保持最新。此策略會讓 reflog 中的資料過期,並移除無法再定位的工作樹。當幾何重包策略決定執行「全部合一」重包時,該策略會為所有不可達物件產生一個 cruft 封裝。已經屬於 cruft 封裝的物件將會過期。此重包策略完全取代了
gc策略,建議用於大型儲存庫。這是手動維護的預設策略。 -
incremental:此設定針對執行不會刪除任何資料的小型維護活動進行最佳化。這不會排程gc任務,但會每小時執行prefetch和commit-graph任務,每天執行loose-objects和incremental-repack任務,每週執行pack-refs任務。手動儲存庫維護會使用gc任務。
-
- maintenance.<task>.enabled
-
此布林設定選項控制當沒有為
gitmaintenancerun指定--task選項時,是否執行名稱為 <task> 的維護任務。如果存在--task選項,則會忽略這些設定值。預設情況下,只有maintenance.gc.enabled為 true。 - maintenance.<task>.schedule
-
此設定選項控制給定的 <task> 是否在
gitmaintenancerun--schedule=<frequency> 指令期間執行。該值必須是 "hourly"(每小時)、"daily"(每天)或 "weekly"(每週)之一。 - maintenance.commit-graph.auto
-
此整數設定選項控制作為
gitmaintenancerun--auto的一部分,commit-graph任務執行的頻率。如果為零,則commit-graph任務將不會隨--auto選項執行。負值將強制任務每次執行。否則,正值意味著當不在 commit-graph 檔案中的可達提交數量至少為maintenance.commit-graph.auto的值時,指令應該執行。預設值為 100。 - maintenance.loose-objects.auto
-
此整數設定選項控制作為
gitmaintenancerun--auto的一部分,loose-objects任務執行的頻率。如果為零,則loose-objects任務將不會隨--auto選項執行。負值將強制任務每次執行。否則,正值意味著當鬆散物件的數量至少為maintenance.loose-objects.auto的值時,指令應該執行。預設值為 100。 - maintenance.loose-objects.batchSize
-
此整數設定選項控制在
loose-objects任務期間寫入封裝檔的鬆散物件最大數量。預設為五萬。使用值0表示無限制。 - maintenance.incremental-repack.auto
-
此整數設定選項控制作為
gitmaintenancerun--auto的一部分,incremental-repack任務執行的頻率。如果為零,則incremental-repack任務將不會隨--auto選項執行。負值將強制任務每次執行。否則,正值意味著當不在 multi-pack-index 中的封裝檔數量至少為maintenance.incremental-repack.auto的值時,指令應該執行。預設值為 10。 - maintenance.geometric-repack.auto
-
此整數設定選項控制作為
gitmaintenancerun--auto的一部分,geometric-repack任務執行的頻率。如果為零,則geometric-repack任務將不會隨--auto選項執行。負值將強制任務每次執行。否則,正值意味著當有封裝檔需要合併以保持幾何級數時,或者當有至少這麼多將被寫入新封裝檔的鬆散物件時,指令應該執行。預設值為 100。 - maintenance.geometric-repack.splitFactor
-
此整數設定選項控制用於幾何序列的因子。有關詳細資訊,請參閱 git-repack[1] 中的
--geometric=選項。預設為2。 - maintenance.reflog-expire.auto
-
此整數設定選項控制作為
gitmaintenancerun--auto的一部分,reflog-expire任務執行的頻率。如果為零,則reflog-expire任務將不會隨--auto選項執行。負值將強制任務每次執行。否則,正值意味著當 "HEAD" reflog 中過期的 reflog 條目數量至少為maintenance.loose-objects.auto的值時,指令應該執行。預設值為 100。 - maintenance.rerere-gc.auto
-
此整數設定選項控制作為
gitmaintenancerun--auto的一部分,rerere-gc任務執行的頻率。如果為零,則rerere-gc任務將不會隨--auto選項執行。負值將強制任務每次執行。否則,任何正值都意味著當 "rr-cache" 目錄存在且至少有一個條目時(無論該條目是否過期),指令就會執行。此啟發式方法將來可能會改進。預設值為 1。 - maintenance.worktree-prune.auto
-
此整數設定選項控制作為
gitmaintenancerun--auto的一部分,worktree-prune任務執行的頻率。如果為零,則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 不會建立額外的合併提交。相反地,目前分支的尖端會快轉 (fast-forwarded)。當設為
false時,此變數告知 Git 在這種情況下建立一個額外的合併提交(相當於在指令列上提供--no-ff選項)。當設為only時,僅允許此類快轉合併(相當於在指令列上提供--ff-only選項)。 merge.verifySignatures-
如果為 true,這相當於
--verify-signatures指令列選項。詳情請參閱 git-merge[1]。 merge.branchdesc-
除了分支名稱外,還要在日誌訊息中加入與其相關聯的分支描述文字。預設為 false。
merge.log-
除了分支名稱外,還要在日誌訊息中加入最多指定數量的、來自實際被合併提交的一行說明。預設為 false,而 true 是 20 的同義詞。
merge.suppressDest-
透過向此多值設定變數新增與整合分支名稱匹配的 glob,為合併到這些整合分支而計算的預設合併訊息將在其標題中省略 "into <分支名稱>"。
值為空的元素可用於清除從先前設定條目累積的 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] 中的「Merging branches with differing checkin/checkout attributes」章節。
merge.stat-
合併結束時,在
ORIG_HEAD和合併結果之間列印什麼內容(如果有的話)。可能的值有:但任何無法識別的值(例如未來版本 Git 新增的值)都會被視為
true,而不是觸發錯誤。預設為true。 merge.autoStash-
當設為
true時,在作業開始前自動建立一個臨時暫存條目,並在作業結束後應用它。這意味著您可以在髒工作樹上執行 merge。但是,請小心使用:成功合併後最終應用暫存可能會導致非微小的衝突。此選項可以由 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> 配置分割視窗佈局,此為
vimdiff、nvimdiff、gvimdiff中的任何一個。當使用--tool=<variant>(如果merge.tool配置為 <variant>,則無需--tool)啟動gitmergetool時,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-
使用
gitlog系列命令顯示提交訊息時,除了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。如果該項也未設定,則預設為 -1,即 zlib 預設值,這是一個「速度與壓縮之間的預設折衷(目前相當於等級 6)。」
請注意,變更壓縮等級不會自動重新壓縮所有現有物件。您可以透過將 -F 選項傳遞給 git-repack[1] 來強制重新壓縮。
- pack.allowPackReuse
-
當為 true 或 "single",且啟用可達性點陣圖時,pack-objects 將嘗試逐字發送點陣圖封裝檔的部分。當為 "multi",且可用多封裝可達性點陣圖時,pack-objects 將嘗試發送 MIDX 中所有封裝的部分。
如果僅提供單一封裝點陣圖,且
pack.allowPackReuse設為 "multi",則僅重複使用點陣圖封裝檔的部分。這可以減少記憶體和 CPU 使用率來服務抓取 (fetch),但可能會導致發送稍大的封裝檔。預設為 true。 - pack.island
-
配置一組增量孤島 (delta islands) 的擴充正規表示式。詳情請參閱 git-pack-objects[1] 中的「DELTA ISLANDS」。
- pack.islandCore
-
指定一個孤島名稱,該孤島的物件將優先被封裝。這會在封裝前端建立一種偽封裝,以便指定孤島中的物件希望能夠更快地複製到任何應該服務於請求這些物件之使用者的封裝中。實際上,這意味著指定的孤島應該對應於儲存庫中最常被複製的內容。另請參閱 git-pack-objects[1] 中的「DELTA ISLANDS」。
- pack.deltaCacheSize
-
在寫入封裝檔之前,git-pack-objects[1] 中用於快取增量資料的最大記憶體(以位元組為單位)。此快取用於透過在找到所有物件的最佳匹配後,無需重新計算最終增量結果來加速寫入物件階段。然而,在記憶體緊張的機器上重新封裝大型儲存庫可能會受到此快取的嚴重影響,特別是如果此快取將系統推向交換空間 (swapping)。值 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 都會被強制執行,且此設定選項會被忽略。
如果您有無法理解版本 2
*.idx檔案的舊版 Git,透過非原生協定(例如 "http")進行 clone 或 fetch,會複製對方側的*.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 在封裝到 stdout 時(例如,在 fetch 的伺服器端)將使用封裝點陣圖(如果可用)。預設為 true。除非您正在對封裝點陣圖進行除錯,否則通常不需要將其關閉。
- pack.useBitmapBoundaryTraversal
-
當為 true 時,Git 將使用實驗性演算法來計算帶有點陣圖的可達性查詢。不是為所有被否定的尖端建立完整的點陣圖然後再對它們執行 OR 運算,而是將帶有現有點陣圖的被否定尖端視為相加(即如果它們存在則將它們 OR 到結果中,否則忽略它們),並改為在邊界處建立一個點陣圖。
使用此演算法時,由於沒有開啟屬於某些 UNINTERESTING 提交的樹,Git 可能會包含過多的物件。這種不精確性與非點陣圖遍歷演算法相符。
在許多情況下,這可以比精確演算法提供更快的速度,特別是在查詢的否定側點陣圖覆蓋率較差時。
- pack.useSparse
-
當為 true 時,當存在 --revs 選項時,git 將預設在 git pack-objects 中使用 --sparse 選項。此演算法僅遍歷出現在引入新物件之路徑中的樹。在計算要傳送小變更的封裝時,這可以帶來顯著的效能提升。然而,如果包含的提交包含某些類型的直接重新命名,封裝檔中可能會新增額外的物件。預設為
true。 - pack.usePathWalk
-
為
gitpack-objects程序預設啟用--path-walk選項。詳細資訊請參閱 git-pack-objects[1]。 - pack.preferBitmapTips
-
指定參照階層(例如 "refs/heads/");可以多次給定以指定多個階層。當選擇哪些提交將接收點陣圖時,更喜歡位於包含在任何已配置階層中之參照尖端的提交。
請注意,將此配置設為
refs/foo/並不意味著refs/foo/bar和refs/foo/baz尖端的提交一定會被選擇。這是因為點陣圖的提交是從一系列可變長度的視窗中選擇的。如果在視窗中看到任何作為此配置任何值之後綴之參照尖端的提交,則它會立即被優先考慮,勝過該視窗中的任何其他提交。
- pack.writeBitmaps (deprecated)
-
這是
repack.writeBitmaps的已棄用同義詞。 - pack.writeBitmapHashCache
-
當為 true 時,git 將在點陣圖索引中包含一個「雜湊快取 (hash cache)」區段(如果已寫入)。此快取可用於為 git 的增量啟發式方法提供回饋,可能導致點陣圖和非點陣圖物件之間更好的增量(例如,當在較舊的點陣圖封裝與自上次 gc 以來已推送的物件之間服務抓取時)。缺點是它會消耗每個物件 4 位元組的磁碟空間。預設為 true。
寫入多封裝可達性點陣圖時,不會計算新的名稱雜湊 (namehashes);相反地,寫入新點陣圖時,儲存在現有點陣圖中的任何名稱雜湊都會被排列到其適當的位置。
- pack.writeBitmapLookupTable
-
當為 true 時,Git 將在點陣圖索引中包含一個「查詢表 (lookup table)」區段(如果已寫入)。此表格用於盡可能延後載入個別點陣圖。這對於具有相對較大點陣圖索引的儲存庫可能是有益的。預設為 false。
- pack.readReverseIndex
-
當為 true 時,git 將讀取任何可能可用的 .rev 檔案(請參閱:gitformat-pack[5])。當為 false 時,反向索引將從頭開始產生並儲存在記憶體中。預設為 true。
- pack.writeReverseIndex
-
當為 true 時,除了 git-fast-import[1] 和大量入庫機制之外,git 將為其寫入的每個新封裝檔寫入對應的 .rev 檔案(請參閱:gitformat-pack[5])。預設為 true。
- pager.<cmd>
-
如果值為布林值,則在寫入 tty 時開啟或關閉特定 Git 子指令輸出的分頁。否則,使用
pager.<cmd> 值指定的頁面瀏覽器為該子指令開啟分頁。如果在指令列上指定了--paginate或--no-pager,則其優先權高於此選項。若要停用所有指令的分頁,請將core.pager或GIT_PAGER設為cat。 - pretty.<name>
-
--pretty= 格式字串的別名,如 git-log[1] 中所指定。在此處定義的任何別名都可以像內建的 pretty 格式一樣使用。例如,執行
gitconfigpretty.changelog"format:*%H%s"會導致呼叫gitlog--pretty=changelog等同於執行gitlog"--pretty=format:*%H%s"。請注意,與內建格式同名的別名將被靜默忽略。 - promisor.quiet
-
如果設為 "true",在為部分複製(partial clone)擷取額外物件時,會自動採取
--quiet選項。 - promisor.advertise
-
如果設為 "true",伺服器將使用 "promisor-remote" 功能(請參閱 gitprotocol-v2[5])來廣播其正在使用的 promisor 遠端倉儲(如果有的話)。預設值為 "false",表示不廣播 "promisor-remote" 功能。
- promisor.sendFields
-
以逗號或空格分隔的額外遠端相關欄位名稱列表。當伺服器使用 "promisor-remote" 功能廣播其 promisor 遠端倉儲時(請參閱 gitprotocol-v2[5]),會傳送這些欄位名稱及其設定檔中對應的欄位值。目前僅支援 "partialCloneFilter" 和 "token" 欄位名稱。
partialCloneFilter-
包含該遠端倉儲所使用的部分複製篩選器。
token-
包含該遠端倉儲的驗證權杖(authentication token)。
當某個欄位名稱位於此列表中,且伺服器上設有對應的 "remote.foo.<field-name>" 設定變數且值非空時,在廣播 "foo" 這個 promisor 遠端倉儲時,就會一併傳送該欄位名稱與值。
除非 "promisor.advertise" 設定變數設為 "true",否則此列表無效。無論此設定為何,"name" 和 "url" 欄位永遠會被廣播。
- promisor.acceptFromServer
-
如果設為 "all",用戶端將接受伺服器透過 "promisor-remote" 功能廣播的所有 promisor 遠端倉儲。如果設為 "knownName",用戶端將僅接受與用戶端已設定名稱相同且由伺服器廣播的 promisor 遠端倉儲。這不太安全,但可用於公司環境中,前提是伺服器和用戶端皆受信任,不會隨意更改名稱和網址。如果設為 "knownUrl",用戶端將僅接受名稱與網址皆與用戶端已設定之 promisor 遠端倉儲相符的項目。這比 "all" 或 "knownName" 更安全,因此若可行,應優先使用此選項。預設值為 "none",表示不接受伺服器廣播的任何 promisor 遠端倉儲。接受 promisor 遠端倉儲即表示用戶端同意伺服器在回應用戶端的 "fetch" 和 "clone" 請求時,可省略那些能從此 promisor 遠端倉儲延遲擷取的物件。名稱與網址的比較區分大小寫。請參閱 gitprotocol-v2[5]。
- promisor.checkFields
-
以逗號或空格分隔的額外遠端相關欄位名稱列表。用戶端在接受 promisor 遠端倉儲前,會檢查伺服器傳輸的這些欄位值是否與其自身設定中的欄位值一致。目前僅支援 "partialCloneFilter" 和 "token" 欄位名稱。
若針對某個廣播的 promisor 遠端倉儲(例如 "foo")檢查其中一個欄位名稱(例如 "token"),必須滿足以下三個條件,該欄位的檢查才會通過:
-
必須設定對應的本地設定(例如
remote.foo.token)。 -
伺服器必須廣播該遠端倉儲 "foo" 的 "token" 欄位。
-
本地設定的
remote.foo.token值必須與伺服器廣播的 "token" 欄位值完全相符。如果
promisor.checkFields中列出的任何欄位名稱未滿足上述任一條件,該廣播的遠端倉儲 "foo" 將被拒絕。對於 "partialCloneFilter" 欄位,這讓用戶端能確保伺服器的篩選器符合本地預期,從而防止篩選行為不一致。對於 "token" 欄位,可用於驗證驗證憑證是否符合預期值。
欄位值比較時區分大小寫。
"name" 和 "url" 欄位會根據
promisor.acceptFromServer政策自動進行檢查,不受此設定影響。欄位名稱與值應由伺服器透過
promisor.sendFields設定變數,經由 "promisor-remote" 功能進行傳遞。只有在promisor.acceptFromServer未設為 "None" 時,才會檢查這些欄位。若設為 "None",此設定變數無效。請參閱 gitprotocol-v2[5]。
-
- promisor.storeFields
-
以逗號或空格分隔的額外遠端相關欄位名稱列表。如果用戶端接受了廣播的遠端倉儲,用戶端將會把從遠端廣播中取得的這些欄位值存入其設定檔,並重新載入遠端設定。目前僅支援 "partialCloneFilter" 和 "token" 欄位名稱。
例如,若伺服器為遠端倉儲 "foo" 廣播了 "partialCloneFilter=blob:limit=20k",且該遠端倉儲被接受,則 "blob:limit=20k" 將會被存入
remote.foo.partialCloneFilter設定變數中。如果從廣播遠端倉儲取得的新欄位值與用戶端該遠端倉儲現有的欄位值相同,則不會對用戶端設定進行變更。
當儲存新值時,標準錯誤輸出會顯示一則訊息以通知使用者。
請注意,基於安全考量,如果該遠端倉儲尚未在用戶端配置,則不會儲存任何內容。在任何情況下,都不會建立新的遠端倉儲,也不會儲存任何網址。
在儲存部分複製篩選器之前,會先解析以檢查其有效性。若無效,將發出警告且不予儲存。
在儲存權杖之前,會先檢查其是否包含控制字元。若檢查失敗,將發出警告且不予儲存。
- 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
-
設定 clone/fetch/push 指令使用 <name> 協定時採用的政策。可用政策請參閱上述
protocol.allow。Git 目前使用的協定名稱有:
-
file:任何本地檔案路徑(包括file://網址或本地路徑)。 -
git:透過直接 TCP 連線(或已設定的代理)的匿名 git 協定。 -
ssh:透過 ssh 的 git(包括host:path語法、ssh://等)。 -
http:透過 http 的 git,包括 "smart http" 和 "dumb http"。請注意,這 *不* 包含https;若要同時設定兩者,必須分開設定。 -
任何外部輔助程式都以其協定命名(例如,使用
hg來允許git-remote-hg輔助程式)。
-
- protocol.version
-
若已設定,用戶端會嘗試以指定的協定版本與伺服器通訊。若伺服器不支援,則會退回至版本 0。若未設定,預設為
2。支援的版本:-
0- 原始的傳輸協定。 -
1- 在伺服器初始回應中包含版本字串的原始傳輸協定。 -
2- 傳輸協定版本 2,請參閱 gitprotocol-v2[5]。
-
- pull.ff
-
預設情況下,當合併一個屬於當前提交之後代的提交時,Git 不會建立額外的合併提交,而是將當前分支的尖端進行快轉(fast-forward)。當設為
false時,此變數告知 Git 在此情況下建立一個額外的合併提交(相當於在命令列使用--no-ff選項)。當設為only時,僅允許進行快轉合併(相當於在命令列使用--ff-only選項)。此設定在 pull 時會覆寫merge.ff。 - pull.rebase
-
當設為 true 時,執行 "git pull" 會在已擷取的分支之上變基(rebase)分支,而不是合併預設遠端預設分支。關於各分支的個別設定,請參閱 "branch.<name>.rebase"。
當值為
merges(或 m) 時,會將--rebase-merges選項傳遞給 git rebase,以便將本地合併提交包含在變基操作中(詳情請參閱 git-rebase[1])。當值為
interactive(或 i) 時,會以互動模式執行變基。注意:這可能是一個危險的操作;除非您理解其影響,否則請勿使用(詳情請參見 git-rebase[1])。
- pull.octopus
-
一次 pull 多個分支時使用的預設合併策略。
- pull.autoStash
-
當設為 true 時,在作業開始前自動建立一個臨時的 stash 記錄本地變更,並在作業完成後還原。當您的 "git pull" 執行變基(而非合併)時,這會很方便,因為與合併不同(合併 pull 可以容忍不干擾合併的本地變更),變基 pull 拒絕在有任何本地變更時執行。
如果已設定
pull.autostash(無論是 true 或 false),merge.autostash和rebase.autostash將被忽略。若完全未設定pull.autostash,則會根據pull.rebase的值來使用merge.autostash或rebase.autostash。可透過命令列選項--[no-]autostash覆寫。 - pull.twohead
-
pull 單一分支時使用的預設合併策略。
push.autoSetupRemote-
如果設為
true,則在當前分支沒有上游追蹤的情況下執行預設 push 時,假設使用了--set-upstream;此選項適用於push.default為simple、upstream和current的情況。若您希望新分支預設推送到預設遠端倉儲(行為類似push.default=current)且同時設定上游追蹤,此選項非常實用。此選項最適合simple中央式工作流程,即所有分支預期在遠端倉儲都有相同名稱的情況。 push.default-
定義若未指定引用規格(refspec,無論是從命令列、設定檔或其他來源)時,
gitpush應採取的動作。不同的值適用於特定的工作流程;例如,在純中央式工作流程(即擷取來源與推送目的地相同)中,upstream通常是您需要的。可用的值如下:nothing-
除非指定了引用規格,否則不推送任何內容(回報錯誤)。這主要是為了避免因誤操作而設計,要求必須明確指定。
current-
推送當前分支以更新接收端具有相同名稱的分支。適用於中央式與非中央式工作流程。
upstream-
將當前分支推送到通常會整合其變更的分支(即
@{upstream})。此模式僅在您推送到通常 pull 的同一個倉儲時才有意義(即中央式工作流程)。 tracking-
這是
upstream的棄用同義詞。 simple-
將當前分支推送到遠端同名分支。
如果您採用中央式工作流程(推送到您 pull 的同一個倉儲,通常是
origin),則需要設定一個同名的上游分支。此模式自 Git 2.0 起成為預設值,也是適合初學者的最安全選項。
matching-
推送兩端同名的所有分支。這會讓您推送到的倉儲記憶即將推送的分支集(例如,如果您總是推送到那裡的
maint和master而沒有其他分支,則您推送到的倉儲將擁有這兩個分支,且您本地的maint和master也會被推送過去)。要有效使用此模式,您必須確保在執行
gitpush之前,所有您打算推送出去的分支都已準備就緒,因為此模式的重點就是讓您能一次推送所有分支。如果您通常只完成一個分支的工作並推送結果,而其他分支尚未完成,則此模式不適合您。此外,此模式也不適合推送到共享的中央倉儲,因為其他人可能會在那裡添加新分支,或更新您無法控制的現有分支尖端。這曾經是預設值,但自 Git 2.0 起不再是(
simple是新的預設值)。
push.followTags-
如果設為 true,預設啟用
--follow-tags選項。您可以在推送時透過指定--no-follow-tags來覆寫此設定。 push.gpgSign-
可設為布林值或字串
if-asked。True 值會使所有推送動作都經過 GPG 簽署,如同向 git-push[1] 傳遞了--signed。字串if-asked會在伺服器支援的情況下進行簽署,如同向gitpush傳遞了--signed=if-asked。False 值可能會覆寫優先順序較低的設定檔中的值。明確的命令列旗標永遠會覆寫此設定選項。 push.pushOption-
當命令列未給予
--push-option=<option> 引數時,gitpush的行為如同每個此變數的 <option> 皆作為--push-option=<option> 給出。這是一個多值變數,且可以在高優先順序設定檔(例如倉儲中的
.git/config)中使用空值來清除從低優先順序設定檔(例如$HOME/.gitconfig)繼承的值。Example: /etc/gitconfig push.pushoption = a push.pushoption = b ~/.gitconfig push.pushoption = c repo/.git/config push.pushoption = push.pushoption = b This will result in only b (a and c are cleared).
push.recurseSubmodules-
可設為
check、on-demand、only或no,行為與push--recurse-submodules相同。若未設定,預設使用no,除非已設定submodule.recurse(在此情況下,true值意味著on-demand)。 push.useForceIfIncludes-
如果設為
true,等同於在命令列對 git-push[1] 指定--force-if-includes選項。在推送時加入--no-force-if-includes將覆寫此設定。 push.negotiate-
如果設為
true,則透過用戶端與伺服器嘗試尋找共同提交的談判回合,來嘗試減少傳送的封包檔案(packfile)大小。如果設為false,Git 將僅依賴伺服器的引用廣播來尋找共同提交。 push.useBitmaps-
如果設為
false,即使pack.useBitmaps為true,也會停用gitpush使用點陣圖(bitmaps),而不影響其他 git 操作對點陣圖的使用。預設值為true。 - rebase.backend
-
變基時使用的預設後端。可選值為 apply 或 merge。未來若 merge 後端獲得了 apply 後端的所有剩餘功能,此設定可能會被棄用。
- rebase.stat
-
是否顯示自上次變基以來,上游變更的 diffstat。預設為 false。
- rebase.autoSquash
-
如果設為 true,互動模式下將預設啟用 git-rebase[1] 的
--autosquash選項。這可透過--no-autosquash選項覆寫。 - rebase.autoStash
-
當設為 true 時,在作業開始前自動建立臨時的 stash 條目,並在作業結束後套用。這意味著您可以在髒污的工作目錄中執行變基。但請謹慎使用:變基成功後最終的 stash 套用可能會導致非顯而易見的衝突。此選項可透過 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,
gitrebase將在待辦清單中使用縮寫的指令名稱,例如: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 會向其用戶端廣播原子推送(atomic push)功能。如果您不想廣播此功能,請將此變數設為 false。
- receive.advertisePushOptions
-
當設為 true 時,git-receive-pack 會向其用戶端廣播推送選項(push options)功能。預設為 false。
- receive.autogc
-
預設情況下,git-receive-pack 會在從 git-push 接收資料並更新引用後執行 "git maintenance run --auto"。您可以將此變數設為 false 來停止此行為。
- receive.certNonceSeed
-
透過將此變數設為一個字串,
gitreceive-pack將接受gitpush--signed,並使用此字串作為密鑰透過 HMAC 保護的 "nonce" 來進行驗證。 - receive.certNonceSlop
-
當
gitpush--signed傳送一個推送憑證,且其中包含的 "nonce" 是由在指定秒數內為同一個倉儲提供服務的 receive-pack 所發出時,將憑證中找到的 "nonce" 匯出至 hooks 的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秒未傳輸任何資料,它將發送一個簡短的 keepalive 封包。預設值為 5 秒;設為 0 可完全停用 keepalive。 - receive.unpackLimit
-
如果推播中接收到的物件數量低於此限制,則物件會被解包為鬆散物件檔。然而,如果接收到的物件數量等於或超過此限制,則接收到的封包將在加入任何遺失的 delta 基底後儲存為封包。從推播中儲存封包可以讓推播操作更快完成,特別是在緩慢的檔案系統上。若未設定,則使用
transfer.unpackLimit的值。 - receive.maxInputSize
-
如果傳入的封包串流大小大於此限制,則 git-receive-pack 會報錯,而非接受該封包檔案。若未設定或設為 0,則大小無限制。
- receive.denyDeletes
-
如果設為 true,git-receive-pack 將拒絕刪除引用的引用更新。使用此選項可防止透過推播進行此類引用刪除。
- receive.denyDeleteCurrent
-
如果設為 true,git-receive-pack 將拒絕刪除非裸倉儲(non-bare repository)當前 checkout 分支的引用更新。
- receive.denyCurrentBranch
-
如果設為 true 或 "refuse",git-receive-pack 將拒絕向非裸倉儲當前 checkout 的分支進行引用更新。此類推播具有潛在危險,因為它會導致 HEAD 與索引和工作樹不同步。如果設為 "warn",則將此類推播的警告列印到 stderr,但允許推播繼續。如果設為 false 或 "ignore",則允許此類推播而不顯示任何訊息。預設為 "refuse"。
另一個選項是 "updateInstead",它會在推送到當前分支時更新工作樹。此選項旨在當一方無法輕易透過互動式 ssh 存取時(例如即時網站,因此要求工作目錄必須是乾淨的)用於同步工作目錄。此模式在虛擬機內開發以在不同作業系統上測試和修復程式碼時也很有用。
預設情況下,若工作樹或索引與 HEAD 有任何差異,"updateInstead" 會拒絕推播,但可以使用
push-to-checkouthook 來客製化此行為。請參閱 githooks[5]。 - receive.denyNonFastForwards
-
如果設為 true,git-receive-pack 將拒絕非快轉(non-fast-forward)的引用更新。即使是強制推播,也可以透過此選項防止此類更新。此設定變數在初始化共享倉儲時會被設定。
- receive.hideRefs
-
此變數與
transfer.hideRefs相同,但僅適用於receive-pack(因此影響推送,但不影響擷取)。任何嘗試透過gitpush更新或刪除隱藏引用的嘗試都會被拒絕。 - receive.procReceiveRefs
-
這是一個多值變數,定義了用於匹配
receive-pack中指令的引用首碼。匹配這些首碼的指令將由外部 hook "proc-receive" 執行,而非內部execute_commands函式。若未定義此變數,則不會使用 "proc-receive" hook,所有指令皆由內部execute_commands函式執行。例如,若此變數設為 "refs/for",推送到如 "refs/for/master" 的引用將不會建立或更新名為 "refs/for/master" 的引用,而是透過執行 "proc-receive" hook 直接建立或更新提取請求(pull request)。
可在值的前面提供選擇性修飾符來過濾特定動作的指令:create (a)、modify (m)、delete (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,當新引用需要新的淺層根(shallow roots)時,可以更新 .git/shallow。否則這些引用將被拒絕。
- reftable.blockSize
-
reftable 後端在寫入區塊時使用的位元組大小。區塊大小由寫入器決定,不必為 2 的冪。區塊大小必須大於倉儲中使用的最長引用名稱或日誌條目,因為引用不能跨越區塊。
建議使用對虛擬記憶體系統或檔案系統友善的 2 的冪(例如 4kB 或 8kB)。較大的大小(64kB)可以獲得更好的壓縮效果,但可能會增加讀取者在存取時的開銷。
最大區塊大小為
16777215位元組 (15.99 MiB)。預設值為4096位元組 (4kB)。值為0將使用預設值。 - reftable.restartInterval
-
建立重啟點(restart points)的間隔。reftable 後端在檔案建立時決定重啟點。每 16 個記錄可能更適合較小的區塊大小(4k 或 8k),每 64 個記錄適合較大的區塊大小(64k)。
更頻繁的重啟點會減少首碼壓縮並增加重啟表佔用的空間,這兩者都會增加檔案大小。
較不頻繁的重啟點會使首碼壓縮更有效,從而減少整體檔案大小,但會增加讀取者在二元搜尋步驟後遍歷更多記錄的代價。
每個區塊最多支援
65535個重啟點。預設值為每 16 個記錄建立一個重啟點。值為
0將使用預設值。 - reftable.indexObjects
-
reftable 後端是否應寫入物件區塊。物件區塊是物件識別碼到指向它們的引用的反向映射。
預設值為
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 用於 fetch,所有 URL 皆用於 push(假設未定義
remote.<name>.pushurl)。將此鍵設為空字串會清除 URL 列表,讓您覆寫先前的設定。 - remote.<name>.pushurl
-
遠端倉儲的 push URL。請參閱 git-push[1]。如果設定的遠端倉儲中存在
pushurl選項,則會使用該選項來代替remote.<name>.url進行推送。已設定的遠端倉儲可以有多個 push 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] 的預設引用規格(refspec)集。請參閱 git-fetch[1]。
- remote.<name>.push
-
git-push[1] 的預設引用規格(refspec)集。請參閱 git-push[1]。
- remote.<name>.mirror
-
如果為 true,推送至此遠端倉儲時將自動表現得如同在命令列給予了
--mirror選項。 - remote.<name>.skipDefaultUpdate
-
remote.<name>.skipFetchAll的棄用同義詞(如果兩者在設定檔中設有不同的值,將使用最後出現的值)。 - remote.<name>.skipFetchAll
-
如果為 true,在使用 git-fetch[1]、git-remote[1] 的
update子指令進行更新時,將會跳過此遠端倉儲,並在gitmaintenance的預擷取任務中被忽略。 - remote.<name>.receivepack
-
推播時在遠端執行的預設程式。請參閱 git-push[1] 的 --receive-pack 選項。
- remote.<name>.uploadpack
-
擷取(fetch)時在遠端執行的預設程式。請參閱 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啟用了修剪(pruning),則從該遠端倉儲擷取時,預設也會移除遠端上不再存在的任何本地標籤。會覆寫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] 建立的封包會使用 delta-base offset。如果您需要與 1.4.4 版本之前的 Git 分享倉儲(直接或透過 http 等啞協定),則需要將此選項設為 "false" 並重新打包。透過原生協定從舊版 Git 存取不受此選項影響。
- repack.packKeptObjects
-
如果設為 true,使
gitrepack的行為如同傳遞了--pack-kept-objects。詳情請參閱 git-repack[1]。通常預設為false,但若正在寫入點陣圖索引(透過--write-bitmap-index或repack.writeBitmaps),則預設為true。 - repack.useDeltaIslands
-
如果設為 true,使
gitrepack的行為如同傳遞了--delta-islands。預設為false。 - repack.writeBitmaps
-
當為 true 時,git 在將所有物件打包到磁碟時(例如執行
gitrepack-a)會寫入點陣圖索引。此索引可加速後續為 clone 和 fetch 所建立封包的 "counting objects" 階段,代價是部分磁碟空間和初始重新打包時的額外時間。如果建立多個封包檔案,此選項無效。在裸倉儲中預設為 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 封包且命令列未提供相應參數時,由 git-pack-objects[1] 使用的參數。預設值與含義請參閱名稱類似的
pack.*設定變數。 - repack.midxMustContainCruft
-
當設為 true 時,當 git-repack[1] 以
--write-midx呼叫時,會無條件地將 cruft 封包(若有)包含在多封包索引(multi-pack index)中。當為 false 時,cruft 封包僅在必要時(例如可能需要形成具有 MIDX 點陣圖的連通性閉包時)才會包含在 MIDX 中。預設為 true。 - rerere.autoUpdate
-
當設為 true 時,
git-rerere會在乾淨地解決衝突後,使用先前記錄的解決方案更新索引。預設為 false。 - rerere.enabled
-
啟動已解決衝突的記錄,以便在再次遇到相同的衝突區段時能自動解決。預設情況下,如果
$GIT_DIR下存在rr-cache目錄(例如之前在倉儲中使用過 "rerere"),則 git-rerere[1] 即為啟用狀態。 - revert.reference
-
將此變數設為 true 可使
gitrevert的行為如同給予了--reference選項。 - safe.bareRepository
-
指定 Git 可操作的裸倉儲。目前支援的值有:
- safe.directory
-
這些設定條目指定了即使所有者非當前使用者,也被視為安全的 Git 追蹤目錄。預設情況下,Git 甚至會拒絕解析由他人擁有之倉儲的 Git 設定,更不用說執行其 hooks,而此設定允許使用者指定例外情況,例如有意共享的倉儲(請參閱 git-init[1] 中的
--shared選項)。這是一個多值設定,即您可以透過
gitconfig--add新增多個目錄。要重置安全目錄列表(例如覆寫系統設定中指定的目錄),請新增一個值為空的safe.directory條目。此設定僅在受保護的設定中受尊重(請參閱 SCOPES)。這防止了不受信任的倉儲篡改此值。
此設定的值會經過插值處理,即
~/<path> 會展開為相對於家目錄的路徑,而%(prefix)/<path> 會展開為相對於 Git(執行時期)首碼的路徑。若要完全停用此安全檢查,請將
safe.directory設為字串*。這將允許所有倉儲如同列在safe.directory列表中一樣被對待。如果在系統設定中設有safe.directory=*且您想重新啟用此保護,請在列出您認為安全的倉儲之前,先用空值初始化您的列表。提供一個附加了/*的目錄將允許存取該指定目錄下的所有倉儲。如前所述,Git 預設僅允許您存取自己(即執行 Git 的使用者)擁有的倉儲。然而,當 Git 在提供 sudo 的非 Windows 平台上以 root 身分執行時,git 會檢查 sudo 建立的 SUDO_UID 環境變數,並除了 root 的 id 外,還會允許存取作為其值記錄的 uid。這是為了簡化安裝過程中的常見序列 "make && sudo make install"。以 sudo 執行的 git 處理程序會以 root 身分執行,但 sudo 指令會匯出環境變數以記錄原始使用者的 id。如果這不是您想要的,且您希望 git 只信任由 root 擁有的倉儲,那麼您可以在呼叫 git 之前從 root 的環境中移除
SUDO_UID變數。 - sendemail.identity
-
設定識別。提供時,會導致
sendemail.<identity> 子區段中的值優先於sendemail區段中的值。預設識別為sendemail.identity的值。 - sendemail.smtpEncryption
-
說明請參閱 git-send-email[1]。請注意,此設定不受
identity機制影響。 - sendemail.smtpSSLCertPath
-
ca-certificates 的路徑(目錄或單一檔案)。將其設為空字串可停用憑證驗證。
- sendemail.smtpSSLClientCert
-
若伺服器要求,需提供的用戶端憑證檔案路徑。當伺服器設定為驗證用戶端憑證時,這是必需的。若該檔案中未包含對應的私鑰,則必須使用
sendemail.smtpSSLClientKey或--smtp-ssl-client-key選項來提供。 - sendemail.smtpSSLClientKey
-
對應於用戶端憑證的用戶端私鑰檔案路徑。為避免設定錯誤,此設定必須與
sendemail.smtpSSLClientCert或--smtp-ssl-client-cert選項結合使用。如果用戶端金鑰包含在用戶端憑證中,則私鑰的選擇取決於憑證格式。更多細節請造訪 https://metacpan.org/pod/IO::Socket::SSL。 - 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.imapSentFolder
- sendemail.useImapOnly
- sendemail.thread
- sendemail.transferEncoding
- sendemail.validate
- sendemail.xmailer
-
這些設定變數皆提供 git-send-email[1] 命令列選項的預設值。詳情請參閱其說明文件。
- sendemail.outlookidfix
-
若為
true,使 git-send-email[1] 假設--outlook-id-fix;若為false則假設--no-outlook-id-fix。若未指定,其行為將與未指定--outlook-id-fix時相同。 - 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
-
gitrebase-i用於編輯變基說明檔的文字編輯器。此值在使用時由 shell 解釋。它可被GIT_SEQUENCE_EDITOR環境變數覆寫。若未設定,則改用預設的提交訊息編輯器。 - showBranch.default
-
git-show-branch[1] 的預設分支集合。請參閱 git-show-branch[1]。
- sparse.expectFilesOutsideOfPatterns
-
在使用稀疏檢出(sparse checkouts)時,通常不符合任何稀疏模式的檔案會在索引(index)中被標記為 SKIP_WORKTREE 位元,並從工作目錄中移除。因此,Git 通常會檢查帶有 SKIP_WORKTREE 位元的檔案是否實際上存在於工作目錄中(這與預期相反)。如果 Git 發現任何此類檔案,它會透過清除相關的 SKIP_WORKTREE 位元,將這些路徑標記為「存在」。此選項可用於告知 Git 這些「雖被略過但仍存在」的檔案是預期中的,並停止對其進行檢查。
預設值為
false,這允許 Git 自動從索引和工作目錄中檔案列表不同步的狀態中恢復。如果您處於某種環境,其中有外部因素承擔了維護工作目錄檔案存在與否與稀疏模式一致性的責任,請將此設定為
true。例如,如果您有一個具備 Git 感知能力的虛擬檔案系統,該系統具有強大的機制,能根據存取模式保持工作目錄和稀疏模式的同步。無論此設定為何,除非啟用了稀疏檢出,否則 Git 不會檢查「雖被略過但仍存在」的檔案,因此除非
core.sparseCheckout為true,否則此設定項無效。 - splitIndex.maxPercentChange
-
當使用分割索引(split index)功能時,此選項指定在寫入新的共享索引之前,分割索引中所含條目佔總條目(分割索引與共享索引之和)的百分比。該值應介於 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設定)的基準名稱(basename)來決定要使用的命令列參數。如果無法識別基準名稱,Git 將嘗試透過首先使用-G(列印設定)選項呼叫已設定的 SSH 指令來偵測對 OpenSSH 選項的支援,隨後會使用 OpenSSH 選項(如果成功),或者除了主機和遠端指令之外不使用任何選項(如果失敗)。可以設定設定變數
ssh.variant來覆蓋此偵測。有效值為ssh(使用 OpenSSH 選項)、plink、putty、tortoiseplink、simple(除了主機和遠端指令外無選項)。可以使用值auto明確請求預設的自動偵測。任何其他值都會被視為ssh。此設定也可以透過環境變數GIT_SSH_VARIANT覆蓋。目前針對每個變體使用的命令列參數如下
-
ssh- [-p port] [-4] [-6] [-o option] [username@]host command -
simple- [username@]host command -
plink或putty- [-P port] [-4] [-6] [username@]host command -
tortoiseplink- [-P port] [-4] [-6] -batch [username@]host command
除了
simple變體外,命令列參數可能會隨著 Git 加入新功能而改變。 -
stash.index-
如果設定為 true,
gitstashapply和gitstashpop的行為將如同提供了--index選項。預設為 false。請參閱 git-stash[1] 中的說明。這也會影響透過諸如 git-merge[1]、git-rebase[1] 和 git-pull[1] 等指令的
--autostash參數來呼叫 git-stash[1] 的情況。 stash.showIncludeUntracked-
如果設定為 true,
gitstashshow指令將顯示儲存條目中的未追蹤檔案。預設為 false。請參閱 git-stash[1] 中關於 'show' 指令的說明。 stash.showPatch-
如果設定為 true,不帶選項的
gitstashshow指令將以補丁形式顯示儲存條目。預設為 false。請參閱 git-stash[1] 中關於 'show' 指令的說明。 stash.showStat-
如果設定為 true,不帶選項的
gitstashshow指令將顯示儲存條目的差異統計 (diffstat)。預設為 true。請參閱 git-stash[1] 中關於 'show' 指令的說明。 - status.relativePaths
-
預設情況下,git-status[1] 顯示相對於當前目錄的路徑。將此變數設定為
false則會顯示相對於儲存庫根目錄的路徑(這是 v1.5.4 之前 Git 的預設行為)。 - status.short
-
設定為 true 可在 git-status[1] 中預設啟用 --short。選項 --no-short 的優先級高於此變數。
- status.branch
-
設定為 true 可在 git-status[1] 中預設啟用 --branch。選項 --no-branch 的優先級高於此變數。
- status.aheadBehind
-
在 git-status[1] 的非 porcelain 狀態格式中,設定為 true 可預設啟用
--ahead-behind,設定為 false 則啟用--no-ahead-behind。預設為 true。 - status.compareBranches
-
在 git-status[1] 中使用的分支比較說明符的空格分隔列表。目前僅支援
@{upstream}和@{push}。它們會被解析為當前分支的branch@{upstream}和branch@{push}。如果未設定,預設行為等同於
@{upstream},即與已設定的上游追蹤分支進行比較。條目將按照它們在設定中出現的順序顯示。解析為相同參考的重複條目在首次出現後將被抑制,因此
@{push}@{upstream}@{push}最多顯示兩次比較。當@{upstream}和@{push}解析為相同的遠端追蹤分支時,僅顯示一次比較。範例
[status] compareBranches = @{upstream} @{push}這將顯示與當前分支的已設定上游和推送追蹤分支兩者的比較。
- status.displayCommentPrefix
-
如果設定為 true,git-status[1] 將在每一行輸出前插入一個註解字首(以
core.commentChar開頭,即預設的#)。這是 git-status[1] 在 Git 1.8.4 及更早版本中的行為。預設為 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等設定更具針對性。它由gitsubmoduleinit從 gitmodules[5] 檔案填入。請參閱 git-submodule[1] 中關於 update 指令的說明。 - submodule.<name>.branch
-
子模組的遠端分支名稱,由
gitsubmoduleupdate--remote使用。設定此選項可覆蓋.gitmodules檔案中的值。詳情請參閱 git-submodule[1] 和 gitmodules[5]。 - submodule.<name>.fetchRecurseSubmodules
-
此選項可用於控制此子模組的遞迴抓取 (recursive fetching)。它可以使用 "git fetch" 和 "git pull" 的 --[no-]recurse-submodules 命令列選項來覆蓋。此設定將覆蓋 gitmodules[5] 檔案中的設定。
- submodule.<name>.ignore
-
定義 "git status" 和 diff 系列指令在何種情況下將子模組顯示為已修改。當設定為 "all" 時,絕不會將子模組視為已修改。儘管如此,它仍然可以使用 --force 選項暫存,並會在 status 的輸出中顯示。當設定為 "dirty" 時,將忽略子模組工作目錄的所有變更,僅考慮子模組 HEAD 與超級專案中記錄的提交之間的差異。"untracked" 還會讓工作目錄中包含已修改追蹤檔案的子模組顯示出來。當設定為 "none"(預設值)時,如果子模組工作目錄中有未追蹤的檔案,它也會將其顯示為已變更。此設定會覆蓋為該子模組在 .gitmodules 中所做的任何設定,這兩個設定都可以透過使用 "--ignore-submodules" 選項在命令列上進行覆蓋。git submodule 指令不受此設定影響。
- submodule.<name>.active
-
布林值,指示 Git 指令是否對該子模組感興趣。此設定選項的優先級高於 submodule.active 設定選項。詳情請參閱 gitsubmodules[7]。
- submodule.<name>.gitdir
-
這會為子模組 <name> 設定 gitdir 路徑。當啟用了
extensions.submodulePathConfig時,此設定才會被尊重,否則無效。啟用後,此設定將成為子模組 gitdir 路徑的唯一事實來源,如果缺失,Git 將報錯。詳情請參閱 git-config[1]。 - submodule.active
-
一個重複欄位,包含用於比對子模組路徑的 pathspec,以確定 Git 指令是否對該子模組感興趣。詳情請參閱 gitsubmodules[7]。
- submodule.recurse
-
一個布林值,指示指令是否應預設啟用
--recurse-submodules選項。預設為 false。當設定為 true 時,可以透過
--no-recurse-submodules選項停用。請注意,某些缺乏此選項的 Git 指令可能會呼叫上述受submodule.recurse影響的指令;例如gitremoteupdate會呼叫gitfetch,但沒有--no-recurse-submodules選項。對於這些指令,一種解決方法是使用git-csubmodule.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
-
指定複製子模組時如何取得 alternates。可能的值為
no、superproject。預設假設為no,這不會加入參考。當值設定為superproject時,要複製的子模組會計算相對於超級專案 alternate 的 alternates 位置。 - submodule.alternateErrorStrategy
-
指定如何處理透過
submodule.alternateLocation計算出的子模組 alternates 錯誤。可能的值為ignore、info、die。預設為die。請注意,如果設定為ignore或info,且計算出的 alternate 發生錯誤,複製將如同未指定 alternate 一樣繼續進行。 tag.forceSignAnnotated-
一個布林值,指定建立的註釋標籤(annotated tags)是否應進行 GPG 簽署。如果在命令列上指定了
--annotate,它的優先級高於此選項。 tag.sort-
此變數控制 git-tag[1] 顯示標籤時的排序順序。如果未提供
--sort=<value> 選項,將使用此變數的值作為預設值。 tag.gpgSign-
一個布林值,指定是否所有標籤都應進行 GPG 簽署。在自動化指令碼中執行時使用此選項可能導致大量標籤被簽署。因此,使用代理程式(agent)來避免多次輸入 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 Domain Socket(在支援該功能的平台上)。通訊端類型可以是stream或dgram;如果省略,Git 將嘗試兩者。
-
- trace2.normalBrief
-
布林值。當為 true 時,
time、filename和line欄位將從一般輸出中省略。可被GIT_TRACE2_BRIEF環境變數覆蓋。預設為 false。 - trace2.perfBrief
-
布林值。當為 true 時,
time、filename和line欄位將從 PERF 輸出中省略。可被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
-
整數。在將追蹤檔案寫入目標目錄時,如果寫入會超過此數量,則不再寫入額外的追蹤檔案。改為寫入一個 sentinel 檔案,該檔案將封鎖對此目錄的進一步追蹤。預設為 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.<key-alias>.key-
定義 <key-alias> 對應的 <key>。<key-alias> 必須是 <key> 的字首(不分大小寫)。例如,在
gitconfigtrailer.ack.key"Acked-by"中,Acked-by是 <key>,而ack是 <key-alias>。此設定允許在命令列上使用較短的--trailer"ack:..."呼叫,使用 "ack" <key-alias> 代替較長的--trailer"Acked-by:..."。在 <key> 的末尾,可以出現一個分隔符,然後是一些空格字元。預設情況下,唯一有效的分隔符是
:,但這可以使用trailer.separators設定變數更改。如果鍵中有分隔符,則在加入結尾時,它會覆蓋預設分隔符。
trailer.<key-alias>.where-
此選項採用與
trailer.where設定變數相同的值,它會針對具有指定 <key-alias> 的結尾,覆蓋該選項所指定的設定。 trailer.<key-alias>.ifexists-
此選項採用與
trailer.ifexists設定變數相同的值,它會針對具有指定 <key-alias> 的結尾,覆蓋該選項所指定的設定。 trailer.<key-alias>.ifmissing-
此選項採用與
trailer.ifmissing設定變數相同的值,它會針對具有指定 <key-alias> 的結尾,覆蓋該選項所指定的設定。 trailer.<key-alias>.command-
已棄用,建議改用
trailer.<key-alias>.cmd。此選項的行為與trailer.<key-alias>.cmd相同,只是它不會傳遞任何內容作為指定指令的參數。相反,子字串$ARG的第一次出現會被替換為將作為參數傳遞的 <value>。請注意,使用者指令中的
$ARG只會被替換一次,而且原始的$ARG替換方式並不安全。當同一 <key-alias> 同時提供了
trailer.<key-alias>.cmd和trailer.<key-alias>.command時,會使用trailer.<key-alias>.cmd,而忽略trailer.<key-alias>.command。 trailer.<key-alias>.cmd-
此選項可用於指定一個 Shell 指令,該指令將被呼叫一次以自動加入一個具有指定 <key-alias> 的結尾,隨後每次指定
--trailer<key-alias>=<value> 參數時,都會呼叫該指令來修改該選項會產生的結尾的 <value>。當指定指令第一次被呼叫以加入具有指定 <key-alias> 的結尾時,其行為就像在 git-interpret-trailers[1] 的開頭加入了一個特殊的
--trailer<key-alias>=<value> 參數,其中 <value> 取自指令的標準輸出,並刪除任何前導和尾隨空白。如果命令列上也傳遞了一些
--trailer<key-alias>=<value> 參數,則對於每個具有相同 <key-alias> 的這類參數,該指令都會再次呼叫一次。而這些參數(如果有的話)中的 <value> 部分將作為第一個參數傳遞給該指令。透過這種方式,指令可以根據--trailer<key-alias>=<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:Git 在解析包含明文憑證的 URL 時,會向stderr寫入警告訊息。 -
die:Git 在解析包含明文憑證的 URL 時,會向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 端,損壞的物件將留在儲存庫中成為未被參考的物件。
由於
fetch.fsckObjects實作的非隔離性質,不能依賴它像receive.fsckObjects那樣保持物件儲存區的乾淨。物件在解壓縮時會被寫入物件儲存區,因此即使 "fetch" 失敗,也可能引入惡意物件,只是隨後的 "fetch" 成功了,因為只檢查新的傳入物件,而不是那些已經寫入物件儲存區的物件。不應依賴行為上的這種差異。在未來,此類物件也可能被「隔離」起來進行 fetch。
目前,偏執的使用者如果想要與 "push" 相同的保護,則需要找到某種方法來模擬隔離環境。例如,在內部鏡像的情況下,分兩步執行鏡像,先抓取不可信物件,然後對另一個內部儲存庫執行第二次 "push"(這將使用隔離),並讓內部用戶端使用此被推送到的儲存庫,或者封鎖內部 fetch,僅在執行完整 "fsck"(且在此期間沒有新的 fetch)後才允許它們。
- transfer.hideRefs
-
receive-pack和upload-pack用於決定從初始廣告中省略哪些參考的字串。使用多個定義來指定多個前置字串。位於此變數值中列出的階層下的參考會被排除,並且在回應gitpush或gitfetch時會被隱藏。請參閱receive.hideRefs和uploadpack.hideRefs以取得程式特定的設定版本。您也可以在參考名稱前包含
!以否定該條目,明確公開它,即使之前的條目將其標記為隱藏。如果您有多個 hideRefs 值,後面的條目會覆蓋前面的條目(且更特定的設定檔中的條目會覆蓋較不特定的條目)。如果使用了名稱空間(namespace),則會在與
transfer.hiderefs模式比對之前,從每個參考中剝離名稱空間前置字串。為了在剝離前比對參考,請在參考名稱前加入^。如果您組合!和^,!必須先指定。例如,如果
transfer.hideRefs中指定了refs/heads/master且當前名稱空間為foo,則refs/namespaces/foo/refs/heads/master會從廣告中省略。如果設定了uploadpack.allowRefInWant,upload-pack將在協定 v2fetch指令中將want-refrefs/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時,本地gitclone指令將向遠端伺服器請求套件資訊(如果已廣告),並在透過 Git 協定繼續複製之前下載套件。預設為false。 - transfer.advertiseObjectInfo
-
當為
true時,object-info功能由伺服器廣告。預設為 false。 - uploadarchive.allowUnreachable
-
如果為 true,允許用戶端使用
gitarchive--remote請求任何樹(tree),無論是否可從參考尖端(ref tips)存取。詳情請參閱 git-upload-archive[1] 「SECURITY」部分的討論。預設為false。 - uploadpack.hideRefs
-
此變數與
transfer.hideRefs相同,但僅適用於upload-pack(因此僅影響 fetch,不影響 push)。嘗試 fetch 隱藏參考的gitfetch將會失敗。另請參閱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準備封裝檔時可能會有一段靜默期。通常它會輸出進度資訊,但如果 fetch 使用了--quiet,pack-objects在封裝資料開始之前將完全不會輸出任何內容。某些用戶端和網路可能會認為伺服器已當機並放棄。此選項指示upload-pack每隔uploadpack.keepAlive秒發送一個空的 keepalive 封包。將此選項設定為 0 可完全停用 keepalive 封包。預設為 5 秒。 - uploadpack.packObjectsHook
-
如果設定了此選項,當
upload-pack執行gitpack-objects為用戶端建立封裝檔時,它將改為執行此 Shell 指令。pack-objects指令及其參數(包括開頭的gitpack-objects)將附加到該 Shell 指令之後。Hook 的 stdin 和 stdout 被處理為如同執行了pack-objects本身。也就是說,upload-pack將把預計給pack-objects的輸入餵給該 Hook,並期待在 stdout 上得到一個完成的封裝檔。請注意,此設定變數僅在受保護的設定中指定時才有效(請參閱 SCOPES)。這是防止從不受信任的儲存庫進行 fetch 的安全措施。
- uploadpack.allowFilter
-
如果設定了此選項,
upload-pack將支援部分複製(partial clone)和部分抓取(partial fetch)物件過濾。 - 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。在某些站點提供大量儲存庫並使用多種存取方法(其中一些不允許推送)的情況下,此功能允許使用者指定僅抓取 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,則gitworktreeadd預設從 HEAD 建立一個新分支。如果worktree.guessRemote設定為 true,worktreeadd會嘗試尋找名稱與新分支名稱唯一匹配的遠端追蹤分支。如果存在此類分支,它將被檢出並設定為新分支的「上游」。如果找不到此類匹配項,它將回退到從當前HEAD建立新分支。 worktree.useRelativePaths-
使用相對路徑(當為 "
true" 時)或絕對路徑(當為 "false" 時)連結工作樹。這對於可能在不同位置或環境之間移動儲存庫和工作樹的設定特別有用。預設為 "false"。請注意,將
worktree.useRelativePaths設定為 "true" 意味著啟用extensions.relativeWorktrees設定(請參閱 git-config[1]),從而使其與舊版本的 Git 不相容。
錯誤 (BUGS)
使用已棄用的 [section.subsection] 語法時,如果子區段以至少一個大寫字元給出,更改值將導致新增一個多行鍵,而不是變更。例如,當設定如下所示時:
[section.subsection]
key = value1
並且執行 git config section.Subsection.key value2 將導致:
[section.subsection]
key = value1
key = value2
GIT
git[1] 套件的一部分