设置和配置
获取和创建项目
基本快照
分支和合并
共享和更新项目
检查和比较
打补丁
调试
邮件
外部系统
服务器管理
指南
管理
底层命令
-
2.49.0
2025-03-14
-
2.48.1
2025-01-13
-
2.48.0
2025-01-10
-
2.47.2
2024-11-26
-
2.47.1
2024-11-25
-
2.47.0
2024-10-06
-
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.3
2024-11-26
- 2.45.1 → 2.45.2 无更改
-
2.45.0
2024-04-29
-
2.44.3
2024-11-26
- 2.44.1 → 2.44.2 无更改
-
2.44.0
2024-02-23
-
2.43.6
2024-11-26
- 2.43.2 → 2.43.5 无更改
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
-
2.42.4
2024-11-26
- 2.42.2 → 2.42.3 无更改
-
2.42.1
2023-11-02
-
2.42.0
2023-08-21
-
2.41.3
2024-11-26
- 2.41.1 → 2.41.2 无更改
-
2.41.0
2023-06-01
-
2.40.4
2024-11-26
- 2.40.1 → 2.40.3 无更改
-
2.40.0
2023-03-12
- 2.39.1 → 2.39.5 无更改
-
2.39.0
2022-12-12
- 2.38.3 → 2.38.5 无更改
-
2.38.2
2022-12-11
-
2.38.1
2022-10-07
-
2.38.0
2022-10-02
- 2.37.5 → 2.37.7 无更改
-
2.37.4
2022-10-06
- 2.37.3 无更改
-
2.37.2
2022-08-11
- 2.37.1 无更改
-
2.37.0
2022-06-27
- 2.36.4 → 2.36.6 无更改
-
2.36.3
2022-10-06
-
2.36.2
2022-06-23
- 2.36.1 无更改
-
2.36.0
2022-04-18
- 2.35.6 → 2.35.8 无更改
-
2.35.5
2022-10-06
-
2.35.4
2022-06-23
-
2.35.3
2022-04-13
-
2.35.2
2022-03-23
- 2.35.1 无更改
-
2.35.0
2022-01-24
- 2.34.6 → 2.34.8 无更改
-
2.34.5
2022-10-06
-
2.34.4
2022-06-23
-
2.34.3
2022-04-13
-
2.34.2
2022-03-23
- 2.34.1 无更改
-
2.34.0
2021-11-15
- 2.33.6 → 2.33.8 无更改
-
2.33.5
2022-10-06
-
2.33.4
2022-06-23
-
2.33.3
2022-04-13
-
2.33.2
2022-03-23
-
2.33.1
2021-10-12
-
2.33.0
2021-08-16
- 2.32.5 → 2.32.7 无更改
-
2.32.4
2022-10-06
-
2.32.3
2022-06-23
-
2.32.2
2022-04-13
-
2.32.1
2022-03-23
-
2.32.0
2021-06-06
- 2.31.6 → 2.31.8 无更改
-
2.31.5
2022-10-06
-
2.31.4
2022-06-23
-
2.31.3
2022-04-13
-
2.31.2
2022-03-23
-
2.31.1
2021-03-26
-
2.31.0
2021-03-15
- 2.30.7 → 2.30.9 无更改
-
2.30.6
2022-10-06
-
2.30.5
2022-06-23
-
2.30.4
2022-04-13
-
2.30.3
2022-03-23
- 2.30.2 无更改
-
2.30.1
2021-02-08
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 无更改
-
2.29.0
2020-10-19
- 2.28.1 无更改
-
2.28.0
2020-07-27
- 2.27.1 无更改
-
2.27.0
2020-06-01
- 2.26.1 → 2.26.3 无更改
-
2.26.0
2020-03-22
- 2.25.3 → 2.25.5 无更改
-
2.25.2
2020-03-17
-
2.25.1
2020-02-17
-
2.25.0
2020-01-13
- 2.24.1 → 2.24.4 无更改
-
2.24.0
2019-11-04
- 2.23.1 → 2.23.4 无更改
-
2.23.0
2019-08-16
- 2.22.2 → 2.22.5 无更改
-
2.22.1
2019-08-11
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 无更改
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 无更改
-
2.20.0
2018-12-09
- 2.19.3 → 2.19.6 无更改
-
2.19.2
2018-11-21
- 2.19.1 无更改
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 无更改
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 无更改
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
-
2.11.4
2017-09-22
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
-
2.2.3
2015-09-04
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
概要
git config list [<file-option>] [<display-option>] [--includes] git config get [<file-option>] [<display-option>] [--includes] [--all] [--regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name> git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value> git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> git config rename-section [<file-option>] <old-name> <new-name> git config remove-section [<file-option>] <name> git config edit [<file-option>] git config [<file-option>] --get-colorbool <name> [<stdout-is-tty>]
描述
您可以使用此命令查询/设置/替换/取消设置选项。 名称实际上是由点分隔的部分和键,并且该值将被转义。
可以使用 --append
选项将多行添加到选项中。 如果要更新或取消设置可以在多行上出现的选项,则需要给出 value-pattern
(除非给出 --fixed-value
选项,否则它是一个扩展的正则表达式)。 仅更新或取消设置与模式匹配的现有值。 如果要处理与模式**不**匹配的行,只需在前面加上一个感叹号(另请参阅示例),但请注意,这仅在不使用 --fixed-value
选项时才有效。
--type=<type>
选项指示 *git config* 确保传入和传出的值可以在给定的 <type> 下进行规范化。 如果没有给出 --type=<type>
,则不会执行规范化。 调用者可以使用 --no-type
取消设置现有的 --type
说明符。
默认情况下,读取时,这些值从系统,全局和仓库本地配置文件中读取,并且选项 --system
,--global
,--local
,--worktree
和 --file <filename>
可以用于告诉命令仅从该位置读取(请参阅文件)。
默认情况下,写入时,新值将写入仓库本地配置文件,并且选项 --system
,--global
,--worktree
,--file <filename>
可用于告诉命令写入到该位置(您可以说 --local
,但这是默认设置)。
发生错误时,此命令将以非零状态失败。 一些退出代码是
-
section 或 key 无效 (ret=1),
-
没有提供 section 或 name (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
-
将给定的 section 重命名为新名称。
- remove-section
-
从配置文件中删除给定的 section。
- edit
-
打开编辑器以修改指定的配置文件; 可以是
--system
、--global
、--local
(默认)、--worktree
或--file <config-file>
。
选项
- --replace-all
-
默认行为是最多替换一行。 这将替换与键(以及可选的
value-pattern
)匹配的所有行。 - --append
-
向选项添加新行而不更改任何现有值。 这与在
set
中提供 _--value=^$_ 相同。 - --comment <message>
-
在新行或修改行的末尾附加注释。
If _<message>_ begins with one or more whitespaces followed by "#", it is used as-is. If it begins with "#", a space is prepended before it is used. Otherwise, a string " # " (a space followed by a hash followed by a space) is prepended to it. And the resulting string is placed immediately after the value defined for the variable. The _<message>_ must not contain linefeed characters (no multi-line comments are permitted).
- --all
-
使用
get
,返回多值键的所有值。 - --regexp
-
使用
get
,将名称解释为正则表达式。 正则表达式匹配当前区分大小写,并且针对键的规范化版本完成,在该版本中,section 和变量名称均为小写,但 subsection 名称不是。 - --url=<URL>
-
当给定一个由两部分组成的 <name> 作为 <section>.<key> 时,返回 <section>.<URL>.<key> 的值,其中 <URL> 部分与给定的 URL 最匹配(如果不存在这样的键,则使用 <section>.<key> 的值作为后备)。 当仅给定 <section> 作为名称时,对 section 中的所有键执行此操作并列出它们。 如果找不到值,则返回错误代码 1。
- --global
-
对于写入选项:写入全局
~/.gitconfig
文件,而不是仓库.git/config
,如果存在此文件并且~/.gitconfig
文件不存在,则写入$XDG_CONFIG_HOME/git/config
文件。对于读取选项:仅从全局
~/.gitconfig
和$XDG_CONFIG_HOME/git/config
读取,而不是从所有可用文件读取。另请参阅文件。
- --system
-
对于写入选项:写入系统范围的
$(prefix)/etc/gitconfig
,而不是仓库.git/config
。对于读取选项:仅从系统范围的
$(prefix)/etc/gitconfig
读取,而不是从所有可用文件读取。另请参阅文件。
- --local
-
对于写入选项:写入仓库
.git/config
文件。 这是默认行为。对于读取选项:仅从仓库
.git/config
读取,而不是从所有可用文件读取。另请参阅文件。
- --worktree
-
类似于
--local
,不同之处在于如果启用了extensions.worktreeConfig
,则从$GIT_DIR/config.worktree
读取或写入到该文件。 如果未启用,则与--local
相同。 请注意,对于主工作树,$GIT_DIR
等于$GIT_COMMON_DIR
,但对于其他工作树,其形式为$GIT_DIR/worktrees/<id>/
。 请参阅 git-worktree[1] 了解如何启用extensions.worktreeConfig
。 - -f <config-file>
- --file <config-file>
-
对于写入选项:写入到指定文件,而不是仓库
.git/config
。对于读取选项:仅从指定文件读取,而不是从所有可用文件读取。
另请参阅文件。
- --blob <blob>
-
类似于
--file
,但是使用给定的 blob 而不是文件。例如,你可以使用 *master:.gitmodules* 从 master 分支的 *.gitmodules* 文件中读取值。有关如何拼写 blob 名称的更完整列表,请参阅 gitrevisions[7] 中的“SPECIFYING REVISIONS”部分。 - --fixed-value
-
当与
value-pattern
参数一起使用时,将value-pattern
视为一个精确的字符串而不是正则表达式。这会将匹配的名称/值对限制为仅那些值与value-pattern
完全相等的情况。 - --type <type>
-
git config 将确保任何输入或输出在给定的类型约束下都是有效的,并将以
<type>
的规范形式规范化输出值。有效的
<type>
包括:-
bool:将值
true
、yes
、on
和正数规范化为 "true",并将值false
、no
、off
和0
规范化为 "false"。 -
int:将值规范化为简单的十进制数字。可选的后缀 *k*、*m* 或 *g* 将导致该值在输入时分别乘以 1024、1048576 或 1073741824。
-
bool-or-int:根据 *bool* 或 *int* 进行规范化,如上所述。
-
path:通过将前导
~
扩展为$HOME
的值,并将~user
扩展为指定用户的 home 目录来规范化。此说明符在设置值时无效(但你可以从命令行使用git config section.variable ~/
让你的 shell 执行扩展。) -
expiry-date:通过将固定或相对日期字符串转换为时间戳来规范化。此说明符在设置值时无效。
-
color:获取值时,通过转换为 ANSI 颜色转义序列来进行规范化。 设置值时,会执行健全性检查,以确保给定的值可以被规范化为 ANSI 颜色,但会按原样写入。
-
- --bool
- --int
- --bool-or-int
- --path
- --expiry-date
-
用于选择类型说明符的历史选项。 建议改用
--type
(见上文)。 - --no-type
-
取消设置先前设置的类型说明符(如果先前已设置)。 此选项请求 git config 不要规范化检索到的变量。如果没有
--type=<type>
或--<type>
,--no-type
没有效果。 - -z
- --null
-
对于所有输出值和/或键的选项,始终以空字符(而不是换行符)结束值。 使用换行符作为键和值之间的分隔符。 这允许安全地解析输出,而不会被包含换行符的值所迷惑。
- --name-only
-
仅为
list
或get
输出配置变量的名称。 - --show-origin
-
使用来源类型(文件、标准输入、blob、命令行)和实际来源(配置文件路径,ref 或 blob id,如果适用)来增强所有查询的配置选项的输出。
- --show-scope
-
类似于
--show-origin
,它使用该值的范围(工作区、本地、全局、系统、命令)来增强所有查询的配置选项的输出。 - --get-colorbool <name> [<stdout-is-tty>]
-
查找
<name>
(例如color.diff
)的颜色设置,并输出 "true" 或 "false"。<stdout-is-tty>
应该是 "true" 或 "false",并在配置显示 "auto" 时考虑在内。 如果缺少<stdout-is-tty>
,则检查命令本身的标准输出,如果将使用颜色,则以状态 0 退出,否则以状态 1 退出。 当name
的颜色设置未定义时,该命令使用color.ui
作为回退。 - --[no-]includes
-
在查找值时,遵循配置文件中的
include.*
指令。 当给定特定文件时(例如,使用--file
、--global
等),默认为off
;当搜索所有配置文件时,默认为on
。 - --default <value>
-
当使用
get
,并且找不到请求的变量时,表现得好像 <value> 是分配给该变量的值。
已弃用的模式
以下模式已被弃用,取而代之的是子命令。 建议迁移到新语法。
- git config <name>
-
替换为
git config get <name>
。 - git config <name> <value> [<value-pattern>]
-
替换为
git config set [--value=<pattern>] <name> <value>
。 - -l
- --list
-
替换为
git config list
。 - --get <name> [<value-pattern>]
-
替换为
git config get [--value=<pattern>] <name>
。 - --get-all <name> [<value-pattern>]
-
替换为
git config get [--value=<pattern>] --all <name>
。 - --get-regexp <name-regexp>
-
替换为
git config get --all --show-names --regexp <name-regexp>
。 - --get-urlmatch <name> <URL>
-
替换为
git config get --all --show-names --url=<URL> <name>
。 - --get-color <name> [<default>]
-
替换为
git config get --type=color [--default=<default>] <name>
。 - --add <name> <value>
-
替换为
git config set --append <name> <value>
。 - --unset <name> [<value-pattern>]
-
替换为
git config unset [--value=<pattern>] <name>
。 - --unset-all <name> [<value-pattern>]
-
替换为
git config unset [--value=<pattern>] --all <name>
。 - --rename-section <old-name> <new-name>
-
替换为
git config rename-section <old-name> <new-name>
。 - --remove-section <name>
-
替换为
git config remove-section <name>
。 - -e
- --edit
-
替换为
git config edit
。
文件
默认情况下,git config 将从多个文件中读取配置选项
- $(prefix)/etc/gitconfig
-
系统范围的配置文件。
- $XDG_CONFIG_HOME/git/config
- ~/.gitconfig
-
用户特定的配置文件。 当未设置或为空时 XDG_CONFIG_HOME 环境变量,$HOME/.config/ 用作 $XDG_CONFIG_HOME。
这些也称为“全局”配置文件。 如果两个文件都存在,则按照上面给出的顺序读取两个文件。
- $GIT_DIR/config
-
存储库特定的配置文件。
- $GIT_DIR/config.worktree
-
这是可选的,并且仅当
extensions.worktreeConfig
存在于 $GIT_DIR/config 中时才进行搜索。
你还可以通过使用 -c
选项在运行任何 git 命令时提供其他配置参数。 有关详细信息,请参见 git[1]。
将从所有可用的这些文件中读取选项。 如果全局或系统范围的配置文件丢失或无法读取,它们将被忽略。 如果存储库配置文件丢失或无法读取,git config 将以非零错误代码退出。 如果文件无法读取,则会生成错误消息,但如果文件丢失,则不会生成错误消息。
这些文件按照上面给出的顺序读取,最后找到的值优先于先前读取的值。 当采用多个值时,将使用来自所有文件的键的所有值。
默认情况下,选项仅写入存储库特定的配置文件。 请注意,这也影响了 set
和 unset
之类的选项。 git config 每次只会更改一个文件。
你可以通过使用 --file
选项指定文件的路径,或者通过使用 --system
、--global
、--local
或 --worktree
指定配置范围来限制读取或写入哪些配置源。 有关更多信息,请参见上面的 OPTIONS。
范围
每个配置源都属于一个配置范围。 这些范围是:
- 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} 环境变量(参见下面的 ENVIRONMENT)
-c
选项
除了 *command* 之外,每个范围都对应于一个命令行选项:--system
、--global
、--local
、--worktree
。
读取选项时,指定范围将仅从该范围内的文件中读取选项。 写入选项时,指定范围将写入该范围内的文件(而不是存储库特定的配置文件)。 有关完整的说明,请参见上面的 OPTIONS。
大多数配置选项都有效,而与其定义的范围无关,但是某些选项仅在某些范围内有效。 有关完整的详细信息,请参见各个选项的文档。
环境
另请参阅文件。
- GIT_CONFIG_COUNT
- GIT_CONFIG_KEY_<n>
- GIT_CONFIG_VALUE_<n>
-
如果设置了 GIT_CONFIG_COUNT 为一个正数,所有环境变量对 GIT_CONFIG_KEY_<n> 和 GIT_CONFIG_VALUE_<n> (直到该数字) 都将被添加到进程的运行时配置中。 配置对从零开始索引。 任何缺失的键或值都将被视为错误。 空的 GIT_CONFIG_COUNT 与 GIT_CONFIG_COUNT=0 的处理方式相同,即不处理任何配置对。 这些环境变量会覆盖配置文件中的值,但会被通过
git -c
传递的任何显式选项覆盖。当你想生成多个带有共同配置的 git 命令,但又不能依赖配置文件时,这很有用,例如在编写脚本时。
- GIT_CONFIG
-
如果没有为
git config
提供--file
选项,则使用GIT_CONFIG
指定的文件,就好像它是通过--file
提供的一样。 此变量对其他 Git 命令没有影响,主要用于历史兼容性; 通常没有理由使用它来代替--file
选项。
示例
给定一个像这样的 .git/config
# # This is the config file, and # a '#' or ';' character indicates # a comment # ; core variables [core] ; Don't trust file modes filemode = false ; Our diff algorithm [diff] external = /usr/local/bin/diff-wrapper renames = true ; Proxy settings [core] gitproxy=proxy-command for kernel.org gitproxy=default-proxy ; for all the rest ; HTTP [http] sslVerify [http "https://weak.example.com"] sslVerify = false cookieFile = /tmp/cookie.txt
你可以用以下方式将 filemode 设置为 true
% git config set core.filemode true
假设的代理命令条目实际上有一个后缀来区分它们适用的 URL。 以下是如何将 kernel.org 的条目更改为 "ssh"。
% git config set --value='for kernel.org$' core.gitproxy '"ssh" for kernel.org'
这确保只替换 kernel.org 的键/值对。
要删除 renames 的条目,执行
% git config unset diff.renames
如果要删除多变量的条目(例如上面的 core.gitproxy),必须提供一个正则表达式,该表达式匹配一行文本的值。
要查询给定键的值,执行
% git config get core.filemode
或者,要查询多变量
% git config get --value="for kernel.org$" core.gitproxy
如果你想知道多变量的所有值,执行
% git config get --all --show-names core.gitproxy
如果你喜欢冒险,你可以用一个新的 core.gitproxy 替换**所有**的 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 底层和瓷器命令都使用配置变量。 这些变量分为多个部分,其中变量本身的完全限定变量名是最后一个点分隔的段,而节名称是最后一个点之前的所有内容。 变量名称不区分大小写,只允许字母数字字符和 -
,并且必须以字母字符开头。 一些变量可能会多次出现; 我们称该变量为多值。
语法
语法相当灵活和宽松。 空格字符(在此上下文中为空格字符 (SP) 和水平制表符 (HT))在很大程度上被忽略。 # 和 ; 字符开始到行尾的注释。 空行将被忽略。
该文件由节和变量组成。 节以方括号中节的名称开头,并持续到下一个节开始。 节名称不区分大小写。 节名称中只允许字母数字字符、-
和 .
。 每个变量必须属于某个节,这意味着在首次设置变量之前必须有一个节标题。
节可以进一步细分为子节。 要开始一个子节,请将其名称放在双引号中,并用空格与节名称分隔开,放在节标题中,如下例所示
[section "subsection"]
子节名称区分大小写,并且可以包含除换行符和空字节之外的任何字符。 双引号 "
和反斜杠可以通过将其转义为 \"
和 \\
来包含。 读取时,反斜杠前面的其他字符将被删除; 例如,\t
被读取为 t
,\0
被读取为 0
。 节标题不能跨越多行。 变量可能直接属于一个节或属于给定的子节。 如果你有 [section "subsection"]
,你可以拥有 [section]
,但你不需要这样做。
还有一种已弃用的 [section.subsection]
语法。 使用此语法,子节名称将转换为小写,并且也区分大小写地进行比较。 这些子节名称遵循与节名称相同的限制。
所有其他行(以及节标题之后的行尾)都被识别为设置变量,格式为 name = value(或者只是 name,这是说变量是布尔值“true”的简写)。 变量名称不区分大小写,只允许字母数字字符和 -
,并且必须以字母字符开头。
丢弃 name
、=
和 value
周围的空格字符。 value 中的内部空格字符按原样保留。 以 #
或 ;
开头并延伸到行尾的注释将被丢弃。 定义值的行可以通过以反斜杠 (\
) 结尾来继续到下一行; 反斜杠和行尾字符将被丢弃。
如果 value
需要包含前导或尾随空格字符,则必须将其括在双引号 ("
) 中。 在双引号内,双引号 ("
) 和反斜杠 (\
) 字符必须转义:使用 \"
表示 "
,使用 \\
表示 \
。
以下转义序列(除了 \"
和 \\
之外)被识别: \n
表示换行符 (NL),\t
表示水平制表符 (HT, TAB),\b
表示退格符 (BS)。 其他字符转义序列(包括八进制转义序列)无效。
包含
include
和 includeIf
节允许你从另一个来源包含配置指令。 这些节的行为彼此相同,但 includeIf
节可能会在其条件未评估为 true 时被忽略; 请参阅下面的“条件包含”。
你可以通过将特殊 include.path
(或 includeIf.*.path
)变量设置为要包含的文件的名称来从另一个文件包含配置文件。 该变量将路径名作为其值,并受波浪号扩展的约束。 这些变量可以多次给出。
包含文件的内容会立即插入,就好像它们在包含指令的位置找到一样。 如果变量的值是相对路径,则该路径被认为是相对于找到包含指令的配置文件而言的。 请参见下面的示例。
条件包含
你可以通过将 includeIf.<condition>.path
变量设置为要包含的文件的名称来有条件地包含另一个配置文件。
该条件以关键字开头,后跟一个冒号和一些数据,其格式和含义取决于关键字。 支持的关键字有
-
gitdir
-
关键字
gitdir:
后面的数据用作 glob 模式。 如果 .git 目录的位置与该模式匹配,则满足包含条件。.git 位置可能是自动发现的,或者来自
$GIT_DIR
环境变量。 如果存储库是通过 .git 文件自动发现的(例如,来自子模块或链接的工作树),则 .git 位置将是 .git 目录的最终位置,而不是 .git 文件所在的位置。该模式可以包含标准 globbing 通配符和两个额外的通配符,
**/
和/**
,它们可以匹配多个路径组件。 有关详细信息,请参阅 gitignore[5]。 为了方便-
如果模式以
~/
开头,则~
将替换为环境变量HOME
的内容。 -
如果模式以
./
开头,则它将替换为包含当前配置文件的目录。 -
如果模式不以
~/
、./
或/
开头,则会自动添加**/
。 例如,模式foo/bar
变为**/foo/bar
,并且将匹配/any/path/to/foo/bar
。 -
如果模式以
/
结尾,则会自动添加**
。 例如,模式foo/
变为foo/**
。 换句话说,它匹配“foo”和其中的所有内容(递归)。
-
-
gitdir/i
-
这与
gitdir
相同,只是匹配以不区分大小写的方式完成(例如,在不区分大小写的文件系统上) -
onbranch
-
关键字
onbranch:
后面的数据被认为是具有标准 globbing 通配符和两个附加通配符**/
和/**
的模式,它们可以匹配多个路径组件。 如果我们在工作树中,并且当前检出的分支的名称与该模式匹配,则满足包含条件。如果模式以
/
结尾,则会自动添加**
。 例如,模式foo/
变为foo/**
。 换句话说,它匹配所有以foo/
开头的分支。 如果你的分支是按层次结构组织的,并且你想将配置应用于该层次结构中的所有分支,这将非常有用。 -
hasconfig:remote.*.url:
-
此关键字后面的数据被认为是具有标准 globbing 通配符和两个附加通配符
**/
和/**
的模式,它们可以匹配多个组件。 第一次看到此关键字时,将扫描其余配置文件中的远程 URL(不应用任何值)。 如果存在至少一个与此模式匹配的远程 URL,则满足包含条件。此选项(直接或间接)包含的文件不允许包含远程 URL。
请注意,与其他 includeIf 条件不同,解决此条件依赖于在读取条件时尚未知的信息。 一个典型的用例是此选项作为系统级或全局级配置存在,而远程 URL 位于本地级配置中; 因此,需要在解析此条件时提前扫描。 为了避免潜在包含的文件可能影响这些文件是否可能包含的先有鸡还是先有蛋的问题,Git 通过禁止这些文件影响这些条件的解析来打破循环(因此,禁止它们声明远程 URL)。
至于此关键字的命名,它是为了与支持更多基于变量的包含条件的命名方案向前兼容,但目前 Git 仅支持上面描述的精确关键字。
关于通过 gitdir
和 gitdir/i
进行匹配的一些补充说明
-
在匹配之前,不会解析
$GIT_DIR
中的符号链接。 -
在
$GIT_DIR
之外,路径的符号链接(symlink)和真实路径(realpath)版本都会被匹配。例如,如果 ~/git 是 /mnt/storage/git 的符号链接,那么gitdir:~/git
和gitdir:/mnt/storage/git
都会匹配。在 v2.13.0 中首次发布此功能时,情况并非如此,当时只匹配真实路径版本。想要与此功能的初始版本兼容的配置需要仅指定真实路径版本,或者同时指定两个版本。
-
请注意,“../” 不是特殊的,它会按字面意思匹配,这可能不是你想要的。
示例
# Core variables [core] ; Don't trust file modes filemode = false # Our diff algorithm [diff] external = /usr/local/bin/diff-wrapper renames = true [branch "devel"] remote = origin merge = refs/heads/devel # Proxy settings [core] gitProxy="ssh" for "kernel.org" gitProxy=default-proxy ; for the rest [include] path = /path/to/foo.inc ; include by absolute path path = foo.inc ; find "foo.inc" relative to the current file path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory ; include if $GIT_DIR is /path/to/foo/.git [includeIf "gitdir:/path/to/foo/.git"] path = /path/to/foo.inc ; include for all repositories inside /path/to/group [includeIf "gitdir:/path/to/group/"] path = /path/to/foo.inc ; include for all repositories inside $HOME/to/group [includeIf "gitdir:~/to/group/"] path = /path/to/foo.inc ; relative paths are always relative to the including ; file (if the condition is true); their location is not ; affected by the condition [includeIf "gitdir:/path/to/group/"] path = foo.inc ; include only if we are in a worktree where foo-branch is ; currently checked out [includeIf "onbranch:foo-branch"] path = foo.inc ; include only if a remote with the given URL exists (note ; that such a URL may be provided later in a file or in a ; file read after this file is read, as seen in this example) [includeIf "hasconfig:remote.*.url:https://example.com/**"] path = foo.inc [remote "origin"] url = https://example.com/git
值
许多变量的值被视为简单字符串,但有些变量接受特定类型的值,并且有关于如何拼写它们的规则。
- boolean(布尔值)
-
当一个变量被说成接受布尔值时,true 和 false 接受许多同义词;这些都是不区分大小写的。
- integer(整数)
-
许多指定各种大小的变量的值可以附加
k
、M
…,分别表示“将数字缩放 1024”、“缩放 1024x1024”等。 - color(颜色)
-
接受颜色的变量的值是一个颜色列表(最多两个,一个用于前景色,一个用于背景色)和属性(可以根据需要添加多个),用空格分隔。
接受的基本颜色是
normal
、black
、red
、green
、yellow
、blue
、magenta
、cyan
、white
和default
。给出的第一个颜色是前景色;第二个是背景色。除了normal
和default
之外,所有基本颜色都有一个亮色变体,可以通过在颜色前面加上bright
来指定,例如brightred
。颜色
normal
不会对颜色进行任何更改。它与空字符串相同,但可以在单独指定背景颜色时用作前景色(例如,“normal red”)。颜色
default
显式地将颜色重置为终端默认值,例如,指定一个清除的背景。虽然这因终端而异,但这通常与设置为“white black”不同。颜色也可以用 0 到 255 之间的数字表示;这些使用 ANSI 256 色模式(但请注意,并非所有终端都可能支持此模式)。如果你的终端支持,你也可以将 24 位 RGB 值指定为十六进制,例如
#ff0ab3
,或 12 位 RGB 值,例如#f1b
,它等效于 24 位颜色#ff11bb
。接受的属性是
bold
、dim
、ul
、blink
、reverse
、italic
和strike
(用于删除线或“删除线”字母)。任何属性相对于颜色的位置(之前、之后或之间)都无关紧要。可以通过在特定属性前加上no
或no-
来关闭它们(例如,noreverse
、no-ul
等)。伪属性
reset
在应用指定的着色之前重置所有颜色和属性。例如,reset green
将产生绿色前景和默认背景,没有任何活动属性。空颜色字符串不会产生任何颜色效果。这可以用于避免为特定元素着色,而无需完全禁用颜色。
对于 git 的预定义颜色槽,属性应在着色输出中每个项目的开头重置。因此,将
color.decorate.branch
设置为black
将以纯black
绘制该分支名称,即使同一输出行上的前一个内容(例如,log --decorate
输出中分支名称列表之前的左括号)设置为使用bold
或其他属性绘制。但是,自定义日志格式可能会执行更复杂和分层的着色,并且否定形式可能在那里有用。 - pathname(路径名)
-
接受路径名值的变量可以给定一个以 "
~/
" 或 "~user/
" 开头的字符串,并且通常的波浪号扩展会应用于这样的字符串:~/
扩展为$HOME
的值,而~user/
扩展为指定用户的家目录。如果路径以
%(prefix)/
开头,则剩余部分被解释为相对于 Git 的“运行时前缀”的路径,即相对于 Git 本身安装的位置。例如,%(prefix)/bin/
指的是 Git 可执行文件所在的目录。如果 Git 在编译时没有运行时前缀支持,则会替换编译时内置的前缀。在极不可能需要指定不应扩展的文字路径的情况下,需要使用./
作为前缀,如下所示:./%(prefix)/bin
。
变量
请注意,此列表不全面,并且不一定是完整的。对于特定于命令的变量,你将在相应的手册页中找到更详细的描述。
其他与 git 相关的工具可能并且确实使用它们自己的变量。在为自己的工具发明新变量时,请确保它们的名称与 Git 本身和其他流行工具使用的名称不冲突,并在你的文档中描述它们。
-
add.ignoreErrors
-
add.ignore-errors
(已弃用) -
告诉
git add
在由于索引错误而无法添加某些文件时继续添加文件。等效于 git-add[1] 的--ignore-errors
选项。add.ignore-errors
已弃用,因为它不遵循配置变量的通常命名约定。 - advice.*
-
这些变量控制各种可选的帮助消息,旨在帮助新用户。当未配置时,Git 将在消息旁边给出有关如何抑制它的说明。你可以通过将相应的变量设置为
false
来告诉 Git 你已经理解了该问题,不再需要特定的帮助消息。由于它们旨在帮助人类用户,因此这些消息会输出到标准错误。当将 Git 作为子进程运行的工具发现它们具有破坏性时,它们可以在环境中设置
GIT_ADVICE=0
以抑制所有 advice 消息。- addEmbeddedRepo
-
当用户意外地将一个 git 仓库添加到另一个仓库内部时显示。
- addEmptyPathspec
-
当用户运行
git add
而不提供 pathspec 参数时显示。 - addIgnoredFile
-
当用户尝试将忽略的文件添加到索引时显示。
- amWorkDir
-
当 git-am[1] 无法应用补丁文件时显示,以告知用户该文件的位置。
- ambiguousFetchRefspec
-
当多个远程的 fetch refspec 映射到同一个远程跟踪分支命名空间并导致分支跟踪设置失败时显示。
- checkoutAmbiguousRemoteBranchName
-
当 git-checkout[1] 和 git-switch[1] 的参数含糊地解析为多个远程上的远程跟踪分支时显示,在这种情况下,明确的参数本来会导致签出远程跟踪分支。有关如何在某些情况下设置默认使用的给定远程的详细信息,请参阅
checkout.defaultRemote
配置变量,在这种情况下会打印此 advice。 - commitBeforeMerge
-
当 git-merge[1] 拒绝合并以避免覆盖本地更改时显示。
- detachedHead
-
当用户使用 git-switch[1] 或 git-checkout[1] 移动到分离的 HEAD 状态时显示,以告知用户事后如何创建本地分支。
- diverging
-
当无法进行快进时显示。
- fetchShowForcedUpdates
-
当 git-fetch[1] 在 ref 更新后花费很长时间来计算强制更新,或者警告该检查已被禁用时显示。
- forceDeleteBranch
-
当用户尝试删除未完全合并的分支而未设置 force 选项时显示。
- ignoredHook
-
当由于 hook 未设置为可执行文件而忽略 hook 时显示。
- implicitIdentity
-
当用户的用户信息是从系统用户名和域名猜测的时显示,以告知用户如何设置其身份配置。
- mergeConflict
-
当各种命令因冲突而停止时显示。
- nestedTag
-
当用户尝试递归标记标签对象时显示。
- pushAlreadyExists
-
当 git-push[1] 拒绝不符合快进条件的更新(例如,标签)时显示。
- pushFetchFirst
-
当 git-push[1] 拒绝尝试覆盖指向我们没有的对象的远程 ref 的更新时显示。
- pushNeedsForce
-
当 git-push[1] 拒绝尝试覆盖指向不是 commit-ish 的对象的远程 ref 的更新,或者使远程 ref 指向不是 commit-ish 的对象的更新时显示。
- pushNonFFCurrent
-
当 git-push[1] 由于对当前分支的非快进更新而失败时显示。
- pushNonFFMatching
-
当用户运行 git-push[1] 并显式推送“匹配的 refs”(即使用
:
,或指定不是当前分支的 refspec)并且导致非快进错误时显示。 - pushRefNeedsUpdate
-
当 git-push[1] 拒绝强制更新分支时显示,而其远程跟踪 ref 具有我们本地没有的更新。
- pushUnqualifiedRefname
-
当 git-push[1] 放弃尝试根据源和目标 refs 猜测源属于哪个远程 ref 命名空间时显示,但我们仍然可以建议用户根据源对象的类型推送到
refs/heads/*
或refs/tags/*
。 - pushUpdateRejected
-
如果要同时禁用
pushNonFFCurrent
、pushNonFFMatching
、pushAlreadyExists
、pushFetchFirst
、pushNeedsForce
和pushRefNeedsUpdate
,请将此变量设置为false
。 - rebaseTodoError
-
当编辑 rebase todo 列表后出现错误时显示。
- refSyntax
-
当用户提供非法 ref 名称时显示,以告知用户有关 ref 语法文档的信息。
- resetNoRefresh
-
在 git-reset[1] 重置后,如果刷新索引花费超过 2 秒,则会显示此信息,告知用户可以使用
--no-refresh
选项。 - resolveConflict
-
当冲突阻止操作执行时,各种命令会显示此信息。
- rmHints
-
在 git-rm[1] 的输出中出现失败时显示,以提供有关如何从当前状态继续操作的指导。
- sequencerInUse
-
当序列器命令已经在进行中时显示。
- skippedCherryPicks
-
当 git-rebase[1] 跳过一个已经 cherry-pick 到上游分支的提交时显示。
- sparseIndexExpanded
-
当稀疏索引扩展为完整索引时显示,这很可能是由于在稀疏检出之外存在一组意外的文件。
- statusAheadBehind
-
当 git-status[1] 计算本地 ref 与其远程跟踪 ref 相比的 ahead/behind 计数,并且该计算花费的时间超出预期时显示。如果
status.aheadBehind
为 false 或指定了--no-ahead-behind
选项,则不会显示。 - statusHints
-
在 git-status[1] 的输出中,当在 git-commit[1] 中编写提交消息时显示的模板中,以及在切换分支时由 git-switch[1] 或 git-checkout[1] 显示的帮助消息中,显示有关如何从当前状态继续操作的指导。
- statusUoption
-
当 git-status[1] 枚举未跟踪的文件花费超过 2 秒时显示,告知用户可以使用
-u
选项。 - submoduleAlternateErrorStrategyDie
-
当配置为 "die" 的 submodule.alternateErrorStrategy 选项导致致命错误时显示。
- submoduleMergeConflict
-
当遇到非平凡的子模块合并冲突时显示的建议。
- submodulesNotUpdated
-
当用户运行因未运行
git submodule update --init
而失败的子模块命令时显示。 - suggestDetachingHead
-
当 git-switch[1] 拒绝在没有显式
--detach
选项的情况下分离 HEAD 时显示。 - updateSparsePath
-
当要求 git-add[1] 或 git-rm[1] 更新当前稀疏检出之外的索引条目时显示。
- waitingForEditor
-
当 Git 正在等待编辑器输入时显示。例如,当编辑器未在终端内启动时相关。
- worktreeAddOrphan
-
当用户尝试从无效引用创建工作树时显示,告知用户如何创建一个新的未出生分支。
- alias.*
-
git[1] 命令包装器的命令别名 - 例如,在定义
alias.last = cat-file commit HEAD
之后,调用git last
等效于git cat-file commit HEAD
。 为了避免混淆和脚本使用问题,将忽略隐藏现有 Git 命令的别名。 参数由空格分隔,支持常用的 shell 引用和转义。 可以使用引号对或反斜杠来引用它们。请注意,别名的第一个单词不一定必须是命令。 它可以是命令行选项,将被传递到
git
的调用中。 特别是,这在使用-c
传递一次性配置或使用-p
强制分页时非常有用。 例如,可以定义loud-rebase = -c commit.verbose=true rebase
,这样运行git loud-rebase
就相当于git -c commit.verbose=true rebase
。 此外,ps = -p status
将是一个有用的别名,因为git ps
将分页git status
的输出,而原始命令不会。如果别名扩展以感叹号为前缀,它将被视为 shell 命令。 例如,定义
alias.new = !gitk --all --not ORIG_HEAD
,调用git new
等效于运行 shell 命令gitk --all --not ORIG_HEAD
。 注意-
Shell 命令将从存储库的顶层目录执行,该目录不一定是当前目录。
-
GIT_PREFIX
设置为从原始当前目录运行git rev-parse --show-prefix
返回的值。 请参阅 git-rev-parse[1]。 -
Shell 命令别名总是接收提供给 Git 命令行的任何额外参数作为位置参数。
-
如果您的 shell 别名是包含多个命令的“单行”脚本(例如,在管道中),引用多个参数,或者以其他方式无法处理添加到末尾的位置参数,则应谨慎使用。 例如:作为
git cmd 1 2
调用的alias.cmd = "!echo $1 | grep $2"
将被执行为 *echo $1 | grep $2 1 2*,这不是您想要的。 -
处理此问题的便捷方法是在一个内联函数中编写您的脚本操作,然后从命令行使用任何参数调用该函数。 例如,`alias.cmd = "!c() { echo $1 | grep $2 ; }; c" 将正确执行前面的示例。
-
设置
GIT_TRACE=1
可以帮助您调试为别名运行的命令。
-
-
- am.keepcr
-
如果为 true,git-am 将使用参数
--keep-cr
调用 git-mailsplit 来处理 mbox 格式的补丁。 在这种情况下,git-mailsplit 将不会从以\r\n
结尾的行中删除\r
。 可以通过从命令行给出--no-keep-cr
来覆盖。 请参阅 git-am[1]、git-mailsplit[1]。 - am.threeWay
-
默认情况下,如果补丁未干净地应用,
git am
将会失败。 当设置为 true 时,此设置告诉git am
在补丁记录了它应该应用到的 blob 的标识,并且我们本地拥有这些 blob 时,回退到三向合并(等效于从命令行给出--3way
选项)。 默认为false
。 请参阅 git-am[1]。 - apply.ignoreWhitespace
-
当设置为 change 时,告诉 git apply 忽略空格中的更改,与
--ignore-space-change
选项的方式相同。 当设置为以下值之一时:no、none、never、false,它告诉 git apply 尊重所有空格差异。 请参阅 git-apply[1]。 - apply.whitespace
-
告诉 git apply 如何处理空格,与
--whitespace
选项的方式相同。 请参阅 git-apply[1]。 - attr.tree
-
对存储库中树的引用,从中读取属性,而不是工作树中的
.gitattributes
文件。 如果该值无法解析为有效的树对象,则会使用空树。 当使用GIT_ATTR_SOURCE
环境变量或--attr-source
命令行选项时,此配置变量无效。
注意
|
bitmapPseudoMerge.* 中的配置选项被认为是实验性的,并且将来可能会发生更改或完全删除。 有关伪合并位图功能的更多信息,请参阅 gitpacking[7] 的“伪合并位图”部分。 |
- bitmapPseudoMerge.<name>.pattern
-
用于匹配引用名称的正则表达式。 由与此模式匹配的引用指向的提交(并且满足下面的标准,例如
bitmapPseudoMerge.<name>.sampleRate
和bitmapPseudoMerge.<name>.threshold
)将被考虑包含在伪合并位图中。提交根据指向给定提交的任何引用是否与模式匹配(这是一个扩展正则表达式)被分组到伪合并组中。
在伪合并组中,提交可能会根据模式中的捕获组进一步分组为子组。 这些子分组通过连接正则表达式中的任何捕获组,并在它们之间用一个 - 短划线来形成。
例如,如果模式是
refs/tags/
,那么所有标签(前提是它们满足以下标准)将被认为是相同的伪合并组的候选者。 但是,如果模式改为refs/remotes/([0-9])+/tags/
,那么来自不同远程仓库的标签将根据远程仓库编号被分组到单独的伪合并组中。 - bitmapPseudoMerge.<name>.decay
-
确定连续的伪合并位图组的大小减小的速率。 必须是非负数。 此参数可以被认为是函数
f(n) = C * n^-k
中的k
,其中f(n)
是第 `n` 个组的大小。将衰减率设置为等于
0
将导致所有组的大小相同。 将衰减率设置为等于1
将导致第n` 个组的大小为初始组大小的 `1/n
。 衰减率的较高值会导致连续组以越来越快的速度收缩。 默认值为1
。如果所有组的大小相同,则包含较新提交的组的使用频率可能低于较早的组,因为指向较新提交的引用比指向旧提交的引用更有可能被更新。
- bitmapPseudoMerge.<name>.sampleRate
-
确定选择包含在不稳定的伪合并位图中的非位图提交(在引用提示中)的比例。 必须介于
0
和1
之间(包括)。 默认值为1
。 - bitmapPseudoMerge.<name>.threshold
-
确定非位图提交(如上所述,在引用提示中)的最小年龄,这些提交是不稳定的伪合并位图中包含的候选者。 默认值为
1.week.ago
。 - bitmapPseudoMerge.<name>.maxMerges
-
确定可以在其中分配提交的最大伪合并提交数。
对于其模式不包含任何捕获组的伪合并组,此设置适用于匹配正则表达式的所有提交。 对于具有一个或多个捕获组的模式,此设置适用于每个不同的捕获组。
例如,如果您的捕获组是
refs/tags/
,那么此设置会将所有标签分配到最多maxMerges
个伪合并提交中。 但是,如果您的捕获组是,例如,refs/remotes/([0-9]+)/tags/
,那么此设置将单独应用于每个远程仓库的标签集。必须是非负数。 默认值为 64。
- bitmapPseudoMerge.<name>.stableThreshold
-
确定提交(如上所述,在引用提示中,但是即使稳定提交已被位图覆盖,它们仍然被认为是候选者)的最小年龄,这些提交是稳定的伪合并位图的候选者。 默认值为
1.month.ago
。将此阈值设置为较小的值(例如,1.week.ago)会导致生成更稳定的组(这会产生一次性的生成成本),但这些组可能会随着时间的推移而变得陈旧。使用较大的值会产生相反的代价(较少的稳定组,但更有用)。
- bitmapPseudoMerge.<name>.stableSize
-
确定稳定伪合并位图的大小(以提交数为单位)。默认值为
512
。 - blame.blankBoundary
-
在 git-blame[1] 中显示边界提交的空白提交对象名称。此选项默认为 false。
- blame.coloring
-
这决定了应用于 blame 输出的着色方案。它可以是 repeatedLines、highlightRecent 或 none,后者是默认值。
- blame.date
-
指定用于在 git-blame[1] 中输出日期的格式。如果未设置,则使用 iso 格式。 有关支持的值,请参阅 git-log[1] 中
--date
选项的讨论。 - blame.showEmail
-
在 git-blame[1] 中显示作者电子邮件,而不是作者姓名。此选项默认为 false。
- blame.showRoot
-
在 git-blame[1] 中,不要将根提交视为边界。此选项默认为 false。
- blame.ignoreRevsFile
-
忽略文件中列出的修订,每行一个未缩写的对象名称,位于 git-blame[1] 中。 空格和以
#
开头的注释将被忽略。 此选项可以重复多次。 空文件名将重置忽略的修订列表。 此选项将在命令行选项--ignore-revs-file
之前处理。 - blame.markUnblamableLines
-
标记被忽略的修订所更改的行,这些行无法归因于 git-blame[1] 输出中的另一个提交,并带有 *。
- blame.markIgnoredLines
-
标记被忽略的修订所更改的行,这些行归因于 git-blame[1] 输出中的另一个提交,并带有 ?。
- branch.autoSetupMerge
-
告诉 git branch、git switch 和 git checkout 设置新的分支,以便 git-pull[1] 将适当地从起始点分支合并。 请注意,即使未设置此选项,也可以使用
--track
和--no-track
选项为每个分支选择此行为。 有效设置为:false
— 不进行自动设置;true
— 当起始点是远程跟踪分支时,进行自动设置;always
— 当起始点是本地分支或远程跟踪分支时,进行自动设置;inherit
— 如果起始点具有跟踪配置,则将其复制到新分支;simple
— 仅当起始点是远程跟踪分支并且新分支的名称与远程分支相同时,才进行自动设置。 此选项默认为 true。 - branch.autoSetupRebase
-
当使用 git branch、git switch 或 git checkout 创建一个跟踪另一个分支的新分支时,此变量告诉 Git 设置 pull 以 rebase 而不是 merge(请参阅“branch.<name>.rebase”)。 当
never
时,rebase 永远不会自动设置为 true。 当local
时,对于其他本地分支的跟踪分支,rebase 设置为 true。 当remote
时,对于远程跟踪分支的跟踪分支,rebase 设置为 true。 当always
时,rebase 将为所有跟踪分支设置为 true。 有关如何设置分支以跟踪另一个分支的详细信息,请参阅“branch.autoSetupMerge”。 此选项默认为 never。 - branch.sort
-
此变量控制 git-branch[1] 显示分支时的排序顺序。 如果未提供 "--sort=<value>" 选项,则此变量的值将用作默认值。 有关有效值,请参阅 git-for-each-ref[1] 字段名称。
- branch.<name>.remote
-
当位于分支 <name> 上时,它告诉 git fetch 和 git push 从哪个远程仓库获取或推送。 要推送到的远程仓库可能会被
remote.pushDefault
覆盖(对于所有分支)。 当前分支要推送到的远程仓库可以进一步被branch.<name>.pushRemote
覆盖。 如果未配置远程仓库,或者您不在任何分支上并且存储库中定义了多个远程仓库,则获取默认为origin
,推送默认为remote.pushDefault
。 此外,.
(句点)是当前的本地存储库(点存储库),请参阅下面branch.<name>.merge
的最后一条注释。 - branch.<name>.pushRemote
-
当位于分支 <name> 上时,它会覆盖用于推送的
branch.<name>.remote
。 它还覆盖用于从分支 <name> 推送的remote.pushDefault
。 当您从一个位置(例如,您的上游)拉取并推送到另一个位置(例如,您自己的发布存储库)时,您可能需要设置remote.pushDefault
以指定所有分支要推送到的远程仓库,并使用此选项为特定分支覆盖它。 - branch.<name>.merge
-
与 branch.<name>.remote 一起定义给定分支的上游分支。 它告诉 git fetch/git pull/git rebase 合并哪个分支,并且还可以影响 git push(请参阅 push.default)。 当位于分支 <name> 中时,它告诉 git fetch 要在 FETCH_HEAD 中标记为合并的默认 refspec。 该值被视为 refspec 的远程部分,并且必须与从“branch.<name>.remote”给定的远程仓库获取的 ref 匹配。 合并信息被 git pull(首先调用 git fetch)用于查找要合并的默认分支。 如果没有此选项,git pull 默认合并第一个获取的 refspec。 指定多个值以获取章鱼合并。 如果您希望设置 git pull,以便它从本地存储库中的另一个分支合并到 <name> 中,您可以将 branch.<name>.merge 指向所需的分支,并对 branch.<name>.remote 使用相对路径设置
.
(句点)。 - branch.<name>.mergeOptions
-
设置合并到分支 <name> 的默认选项。 语法和支持的选项与 git-merge[1] 的相同,但当前不支持包含空格字符的选项值。
- branch.<name>.rebase
-
当为 true 时,在运行 "git pull" 时,将分支 <name> rebase 到获取的分支之上,而不是从默认远程仓库合并默认分支。 有关以非特定于分支的方式执行此操作,请参阅 "pull.rebase"。
当
merges
(或仅 m)时,将--rebase-merges
选项传递给 git rebase,以便本地合并提交包含在 rebase 中(有关详细信息,请参阅 git-rebase[1])。当值为
interactive
(或仅 i)时,rebase 以交互模式运行。注意:这可能是一个危险的操作; 在您了解其含义之前,请勿 使用它(有关详细信息,请参阅 git-rebase[1])。
- branch.<name>.description
-
分支描述,可以使用
git branch --edit-description
编辑。 分支描述会自动添加到 format-patch 封面信或 request-pull 摘要中。 - browser.<tool>.cmd
-
指定调用指定浏览器的命令。 指定的命令在 shell 中求值,并将 URL 作为参数传递。(请参阅 git-web--browse[1]。)
- browser.<tool>.path
-
覆盖给定工具的路径,该工具可用于浏览 HTML 帮助(请参阅 git-help[1] 中的
-w
选项)或 gitweb 中的工作存储库(请参阅 git-instaweb[1])。 - bundle.*
-
bundle.*
键可能出现在通过git clone --bundle-uri
选项找到的捆绑列表文件中。 如果将这些键放置在存储库配置文件中,则目前无效,尽管将来会更改。 有关更多详细信息,请参阅 捆绑 URI 设计文档。 - bundle.version
-
此整数值声明捆绑列表使用的捆绑列表格式的版本。 当前,唯一接受的值是
1
。 - bundle.mode
-
此字符串值应为
all
或any
。 此值描述了是否需要所有声明的捆绑包才能理解捆绑信息的完整信息 (all
),或者是否任何一个列出的捆绑 URI 都足够 (any
)。 - bundle.heuristic
-
如果存在此字符串值键,则捆绑列表旨在与增量
git fetch
命令一起使用。 启发式信号表明每个捆绑包都有其他键可用,这些键有助于确定客户端应下载哪些捆绑包子集。 当前唯一理解的值是creationToken
。 - bundle.<id>.*
-
bundle.<id>.*
键用于描述捆绑列表中单个项目,这些项目在<id>
下分组以进行标识。 - bundle.<id>.uri
-
此字符串值定义了 Git 可以访问此
<id>
内容的 URI。 此 URI 可以是捆绑文件或另一个捆绑列表。 - checkout.defaultRemote
-
当您运行
git checkout <something>
或git switch <something>
且只有一个远程仓库时,它可能会隐式地回退到检出并跟踪,例如origin/<something>
。一旦您有多个具有<something>
引用的远程仓库,此行为将停止工作。此设置允许您设置一个首选远程仓库的名称,在消除歧义时始终优先选择该仓库。典型的用例是将此设置为origin
。目前,git-switch[1] 和 git-checkout[1] 在
git checkout <something>
或git switch <something>
将检出另一个远程仓库上的<something>
分支时,以及 git-worktree[1] 在git worktree add
引用远程分支时使用此设置。将来,此设置可能会用于其他类似检出的命令或功能。 - checkout.guess
-
提供
git checkout
和git switch
中--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
。可以通过将--origin
命令行选项传递给 git-clone[1] 来覆盖它。 -
clone.rejectShallow
-
如果存储库是浅克隆的,则拒绝克隆该存储库;可以通过在命令行上传递
--reject-shallow
选项来覆盖此设置。请参阅 git-clone[1]。 -
clone.filterSubmodules
-
如果提供了部分克隆过滤器(请参阅 git-rev-list[1] 中的
--filter
)并且使用了--recurse-submodules
,则还将过滤器应用于子模块。 - color.advice
-
一个布尔值,用于启用/禁用提示中的颜色(例如,推送失败时,请参阅
advice.*
以获取列表)。可以设置为always
、false
(或never
)或auto
(或true
),在这种情况下,只有当错误输出转到终端时才使用颜色。如果未设置,则使用color.ui
的值(默认为auto
)。 - color.advice.hint
-
使用自定义颜色显示提示。
- color.blame.highlightRecent
-
指定
git blame --color-by-age
的行注释颜色,具体取决于行的年龄。此设置应设置为以逗号分隔的颜色和日期设置列表,以颜色开始和结束,日期应从旧到新设置。如果该行是在给定时间戳之前引入的,则元数据将以指定的颜色着色,覆盖较旧的带时间戳的颜色。
除了绝对时间戳,相对时间戳也有效,例如,
2.weeks.ago
对于寻址任何超过 2 周的旧内容是有效的。它默认为
blue,12 month ago,white,1 month ago,red
,这将一年以上的项目着色为蓝色,一个月到一年之间的最近更改保持白色,并且最近一个月内引入的行着色为红色。 - color.blame.repeatedLines
-
如果来自与前一行相同的提交,则使用指定的颜色对
git blame --color-lines
的行注释进行着色。默认为青色。 - color.branch
-
一个布尔值,用于启用/禁用 git-branch[1] 输出中的颜色。可以设置为
always
、false
(或never
)或auto
(或true
),在这种情况下,只有当输出转到终端时才使用颜色。如果未设置,则使用color.ui
的值(默认为auto
)。 - color.branch.<slot>
-
使用自定义颜色进行分支着色。
<slot>
是current
(当前分支)、local
(本地分支)、remote
(refs/remotes/ 中的远程跟踪分支)、upstream
(上游跟踪分支)、plain
(其他引用)之一。 - color.diff
-
是否使用 ANSI 转义序列向补丁添加颜色。如果将其设置为
always
,则 git-diff[1]、git-log[1] 和 git-show[1] 将对所有补丁使用颜色。如果设置为true
或auto
,则这些命令仅在输出到终端时才使用颜色。如果未设置,则使用color.ui
的值(默认为auto
)。这不会影响 git-format-patch[1] 或 *git-diff-* 管道命令。可以使用
--color[=<when>]
选项在命令行上覆盖。 - color.diff.<slot>
-
使用自定义颜色进行 diff 着色。
<slot>
指定要使用指定颜色的补丁的哪个部分,并且是context
(上下文文本 -plain
是历史同义词)、meta
(元信息)、frag
(hunk 标头)、func(hunk 标头中的函数)、old
(删除的行)、new
(添加的行)、commit
(提交标头)、whitespace
(突出显示空白错误)、oldMoved
(删除的行)、newMoved
(添加的行)、oldMovedDimmed
、oldMovedAlternative
、oldMovedAlternativeDimmed
、newMovedDimmed
、newMovedAlternative
newMovedAlternativeDimmed
(有关详细信息,请参见 git-diff[1] 中 *--color-moved* 的 <mode> 设置)、contextDimmed
、oldDimmed
、newDimmed
、contextBold
、oldBold
和newBold
(有关详细信息,请参见 git-range-diff[1])。 - color.decorate.<slot>
-
使用自定义颜色显示 git log --decorate 输出。
<slot>
是branch
、remoteBranch
、tag
、stash
或HEAD
,分别用于本地分支、远程跟踪分支、标签、储藏和 HEAD,以及grafted
用于嫁接的提交。 - color.grep
-
设置为
always
时,始终突出显示匹配项。 当false
(或never
)时,从不。 设置为true
或auto
时,仅当将输出写入终端时才使用颜色。 如果未设置,则使用color.ui
的值(默认为auto
)。 - color.grep.<slot>
-
使用自定义颜色进行 grep 着色。
<slot>
指定要使用指定颜色的行的哪个部分,并且是以下之一-
context
-
上下文行中的非匹配文本(当使用
-A
、-B
或-C
时) -
filename
-
文件名前缀(当不使用
-h
时) -
function
-
函数名行(当使用
-p
时) -
lineNumber
-
行号前缀(当使用
-n
时) -
column
-
列号前缀(当使用
--column
时) -
match
-
匹配文本(与设置
matchContext
和matchSelected
相同) -
matchContext
-
上下文行中的匹配文本
-
matchSelected
-
所选行中的匹配文本。 此外,还用于自定义以下 git-log[1] 子命令:
--grep
、--author
和--committer
。 -
selected
-
所选行中的非匹配文本。 此外,还用于自定义以下 git-log[1] 子命令:
--grep
、--author
和--committer
。 -
separator
-
行上字段之间的分隔符(
:
、-
和=
)以及 hunk 之间的分隔符(--
)
-
- color.interactive
-
设置为
always
时,始终对交互式提示和显示(例如“git-add --interactive”和“git-clean --interactive”使用的提示和显示)使用颜色。当为 false(或never
)时,从不。设置为true
或auto
时,仅当将输出发送到终端时才使用颜色。如果未设置,则使用color.ui
的值(默认为auto
)。 - color.interactive.<slot>
-
使用自定义颜色显示 git add --interactive 和 git clean --interactive 输出。
<slot>
可以是prompt
、header
、help
或error
,用于交互式命令的四种不同类型的正常输出。 - color.pager
-
一个布尔值,用于指定
auto
颜色模式是否应对发送到分页器的输出进行着色。 默认为 true;如果您的分页器不理解 ANSI 颜色代码,请将其设置为 false。 - color.push
-
一个布尔值,用于启用/禁用推送错误中的颜色。可以设置为
always
、false
(或never
)或auto
(或true
),在这种情况下,只有当错误输出转到终端时才使用颜色。如果未设置,则使用color.ui
的值(默认为auto
)。 - color.push.error
-
使用自定义颜色显示推送错误。
- color.remote
-
如果设置,则会突出显示行首的关键字。 这些关键字为“error”、“warning”、“hint”和“success”,并且不区分大小写。 可以设置为
always
、false
(或never
)或auto
(或true
)。 如果未设置,则使用color.ui
的值(默认为auto
)。 - color.remote.<slot>
-
使用自定义颜色显示每个远程关键字。
<slot>
可以是hint
、warning
、success
或error
,它们与相应的关键字匹配。 - color.showBranch
-
一个布尔值,用于启用/禁用 git-show-branch[1] 输出中的颜色。可以设置为
always
、false
(或never
)或auto
(或true
),在这种情况下,只有当输出转到终端时才使用颜色。如果未设置,则使用color.ui
的值(默认为auto
)。 - color.status
-
一个布尔值,用于启用/禁用 git-status[1] 输出中的颜色。可以设置为
always
、false
(或never
)或auto
(或true
),在这种情况下,只有当输出到终端时才使用颜色。如果未设置,则使用color.ui
的值(默认情况下为auto
)。 - color.status.<slot>
-
使用自定义颜色进行状态着色。
<slot>
是以下之一:header
(状态消息的标题文本)、added
或updated
(已添加但未提交的文件)、changed
(已更改但未添加到索引中的文件)、untracked
(未被 Git 跟踪的文件)、branch
(当前分支)、nobranch
(显示无分支警告的颜色,默认为红色)、localBranch
或remoteBranch
(分别是在状态短格式中显示分支和跟踪信息时使用的本地和远程分支名称),或unmerged
(具有未合并更改的文件)。 - color.transport
-
一个布尔值,用于启用/禁用推送被拒绝时的颜色。可以设置为
always
、false
(或never
)或auto
(或true
),在这种情况下,只有当错误输出到终端时才使用颜色。如果未设置,则使用color.ui
的值(默认情况下为auto
)。 - color.transport.rejected
-
使用自定义颜色,当推送被拒绝时。
- color.ui
-
此变量确定诸如
color.diff
和color.grep
之类的变量的默认值,这些变量控制每个命令族使用颜色的方式。 它的范围会随着越来越多的命令学习配置来为--color
选项设置默认值而扩展。 如果您希望 Git 命令不使用颜色,除非使用其他配置或--color
选项显式启用,请将其设置为false
或never
。 如果您希望所有不用于机器消费的输出都使用颜色,请将其设置为always
。如果您希望此类输出在写入终端时使用颜色,请将其设置为true
或auto
(这是自 Git 1.8.4 以来的默认设置)。 - column.ui
-
指定支持的命令是否应以列输出。 此变量由空格或逗号分隔的标记列表组成
以下选项控制何时应启用该功能(默认为never)
这些选项控制布局(默认为column)。 如果未指定always、never 或 auto 中的任何一个,则设置其中任何一个都意味着 always。
最后,这些选项可以与布局选项结合使用(默认为nodense)
- column.branch
-
指定是否以列的形式输出
git branch
中的分支列表。 请参阅column.ui
了解详细信息。 - column.clean
-
指定在
git clean -i
中列出项目时的布局,该命令始终以列的形式显示文件和目录。 请参阅column.ui
了解详细信息。 - column.status
-
指定是否以列的形式输出
git status
中未跟踪的文件。 请参阅column.ui
了解详细信息。 - column.tag
-
指定是否以列的形式输出
git tag
中的标签列表。 请参阅column.ui
了解详细信息。
-
commit.cleanup
-
此设置会覆盖
git commit
中--cleanup
选项的默认值。 有关详细信息,请参阅 git-commit[1]。 当您始终希望在日志消息中保留以注释字符#
开头的行时,更改默认值可能很有用,在这种情况下,您将执行git config commit.cleanup whitespace
(请注意,如果您这样做,则必须自己删除提交日志模板中以#
开头的帮助行)。 -
commit.gpgSign
-
一个布尔值,用于指定是否应对所有提交进行 GPG 签名。 在执行诸如变基之类的操作时使用此选项可能会导致大量提交被签名。 使用代理可能很方便,以避免多次键入您的 GPG 密码。
-
commit.status
-
一个布尔值,用于在使用编辑器准备提交消息时启用/禁用在提交消息模板中包含状态信息。 默认为
true
。 -
commit.template
-
指定要用作新提交消息模板的文件的路径名。
-
commit.verbose
-
一个布尔值或整数,用于指定
git commit
的详细程度。 有关详细信息,请参阅 git-commit[1]。 - commitGraph.generationVersion
-
指定在写入或读取 commit-graph 文件时要使用的生成号版本类型。 如果指定了版本 1,则不会写入或读取更正后的提交日期。 默认为 2。
- commitGraph.maxNewFilters
-
指定
git commit-graph write
的--max-new-filters
选项的默认值(参见 git-commit-graph[1])。 - commitGraph.readChangedPaths
-
已弃用。 如果为 true,则等效于 commitGraph.changedPathsVersion=-1;如果为 false,则等效于 commitGraph.changedPathsVersion=0。(如果还设置了 commitGraph.changedPathVersion,则 commitGraph.changedPathsVersion 优先。)
- commitGraph.changedPathsVersion
-
指定 Git 将读取和写入的已更改路径 Bloom 过滤器的版本。 可以为 -1、0、1 或 2。 请注意,大于 1 的值可能与尚未了解这些版本的旧版本 Git 不兼容。 在混合版本环境中操作时请务必小心。
默认为 -1。
如果为 -1,Git 将使用存储库中已更改路径 Bloom 过滤器的版本,如果没有,则默认为 1。
如果为 0,Git 将不会读取任何 Bloom 过滤器,并且在指示写入时将写入版本 1 Bloom 过滤器。
如果为 1,Git 将仅读取版本 1 Bloom 过滤器,并将写入版本 1 Bloom 过滤器。
如果为 2,Git 将仅读取版本 2 Bloom 过滤器,并将写入版本 2 Bloom 过滤器。
有关更多信息,请参阅 git-commit-graph[1]。
- completion.commands
-
这仅由 git-completion.bash 使用,用于从已完成命令的列表中添加或删除命令。 通常,只有瓷器命令和少数其他选定命令会被完成。 您可以在此变量中添加更多命令,以空格分隔。 在命令前加上 - 将从现有列表中删除它。
- core.fileMode
-
告知 Git 是否要遵守工作树中文件的可执行位。
某些文件系统在检出标记为可执行文件的文件时,或者检出启用了可执行位的不可执行文件时,会丢失可执行位。 git-clone[1] 或 git-init[1] 会探测文件系统以查看它是否正确处理可执行位,并且此变量会自动根据需要进行设置。
但是,存储库可能位于正确处理文件模式的文件系统上,并且此变量在创建时设置为 true,但稍后可能会从另一个丢失文件模式的环境访问(例如,通过 CIFS 挂载导出 ext4,使用 Windows 版 Git 或 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
-
此选项仅由 Git 的 Mac OS 实现使用。 当 core.precomposeUnicode=true 时,Git 会还原 Mac OS 完成的 filenames 的 unicode 分解。 这在 Mac OS 与 Linux 或 Windows 之间共享存储库时非常有用。 (需要 Windows 版 Git 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 "short" 名称冲突。 在 Windows 上默认为
true
,在其他地方默认为false
。 - core.fsmonitor
-
如果设置为 true,则为此工作目录启用内置的文件系统监视器守护程序(git-fsmonitor--daemon[1])。
与基于钩子的文件系统监视器类似,内置的文件系统监视器可以加速 Git 命令,这些命令需要在包含大量文件的工作目录中刷新 Git 索引(例如
git status
)。内置监视器无需安装和维护外部第三方工具。内置文件系统监视器目前仅在有限的支持平台上可用。目前,这包括 Windows 和 MacOS。
Otherwise, this variable contains the pathname of the "fsmonitor" hook command.
此钩子命令用于识别自请求的日期/时间以来可能已更改的所有文件。 此信息用于加速 git,避免不必要地扫描未更改的文件。
请参阅 githooks[5] 的 "fsmonitor-watchman" 部分。
请注意,如果您同时使用多个 Git 版本,例如命令行中的一个版本和 IDE 工具中的另一个版本,则
core.fsmonitor
的定义已扩展为允许布尔值以及钩子路径名。 Git 2.35.1 及更早版本将无法理解布尔值,并将 "true" 或 "false" 值视为要调用的钩子路径名。 Git 2.26 到 2.35.1 版本默认为钩子协议 V2,如果失败,则会回退到没有 fsmonitor(完整扫描)。 Git 2.26 之前的版本默认为钩子协议 V1,并且会静默地假设没有要报告的更改(不扫描),因此状态命令可能会报告不完整的结果。 因此,最好在使用内置文件系统监视器之前升级所有 Git 版本。 - core.fsmonitorHookVersion
-
设置调用 "fsmonitor" 钩子时要使用的协议版本。
目前有版本 1 和版本 2。 如果未设置此选项,将首先尝试版本 2,如果失败,则尝试版本 1。 版本 1 使用时间戳作为输入来确定自该时间以来哪些文件发生了更改,但某些监视器(如 Watchman)在与时间戳一起使用时存在竞争条件。 版本 2 使用不透明的字符串,以便监视器可以返回一些可用于确定哪些文件已更改而没有竞争条件的内容。
- core.trustctime
-
如果为 false,则忽略索引和工作树之间的 ctime 差异;当 inode 更改时间经常被 Git 外部的东西修改时(文件系统爬虫和一些备份系统),这很有用。 请参阅 git-update-index[1]。 默认为 True。
- core.splitIndex
-
如果为 true,将使用索引的拆分索引功能。 请参阅 git-update-index[1]。 默认为 False。
- core.untrackedCache
-
确定如何处理索引的未跟踪缓存功能。 如果未设置此变量或将其设置为
keep
,则将保留该缓存。 如果设置为true
,它将自动添加。 如果设置为false
,它将自动删除。 在将其设置为true
之前,应检查 mtime 在您的系统上是否正常工作。 请参阅 git-update-index[1]。 默认为keep
,除非启用了feature.manyFiles
,否则默认情况下会将此设置设置为true
。 - core.checkStat
-
当缺失或设置为
default
时,会检查 stat 结构中的许多字段,以检测自 Git 查看文件以来文件是否已被修改。 当此配置变量设置为minimal
时,mtime 和 ctime 的亚秒部分,文件所有者的 uid 和 gid,inode 编号(以及设备编号,如果 Git 被编译为使用它),将从这些字段的检查中排除,仅留下 mtime 的整秒部分(以及 ctime,如果设置了core.trustCtime
)和要检查的文件大小。有些 Git 实现不会在某些字段中留下可用的值(例如 JGit);通过从比较中排除这些字段,当这些其他系统同时使用同一存储库时,
minimal
模式可能有助于互操作性。 - core.quotePath
-
输出路径的命令 (例如,ls-files, diff) 将引用路径名中的“不寻常”字符,方法是用双引号将路径名括起来,并以 C 转义控制字符(例如,
\t
表示 TAB,\n
表示 LF,\\
表示反斜杠)或值大于 0x80 的字节(例如,八进制\302\265
表示 UTF-8 中的“micro”)的相同方式,使用反斜杠转义这些字符。 如果此变量设置为 false,则高于 0x80 的字节不再被认为是“不寻常”的。 无论此变量的设置如何,双引号、反斜杠和控制字符始终会被转义。 简单的空格字符不被认为是“不寻常的”。 许多命令可以使用-z
选项完全逐字输出路径名。 默认值为 true。 - core.eol
-
设置在工作目录中用于标记为文本的文件(通过设置
text
属性,或者通过text=auto
并让 Git 自动检测内容为文本)的行尾类型。 替代方法是 lf, crlf 和 native, 这会使用平台的本机行尾符。 默认值为native
。 有关行尾转换的更多信息,请参阅 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 在
working-tree-encoding
属性中使用它们,则这是 Git 执行 UTF-8 往返检查的编码的逗号和/或空格分隔列表(请参阅 gitattributes[5])。 默认值为SHIFT-JIS
。 - core.symlinks
-
如果为 false,则符号链接将作为包含链接文本的小型纯文本文件检出。 git-update-index[1] 和 git-add[1] 不会将记录的类型更改为常规文件。 在不支持符号链接的文件系统(如 FAT)上很有用。
默认为 true,除非 git-clone[1] 或 git-init[1] 会探测并在创建存储库时适当地将 core.symlinks 设置为 false。
- core.gitProxy
-
一个“代理命令”,用于执行(作为command host port)而不是在使用 Git 协议进行获取时建立与远程服务器的直接连接。 如果变量值的格式为“COMMAND for DOMAIN”,则该命令仅应用于以指定域字符串结尾的主机名。 可以多次设置此变量,并按给定的顺序匹配; 第一个匹配获胜。
可以被
GIT_PROXY_COMMAND
环境变量覆盖(该变量始终普遍适用,没有特殊的“for”处理)。特殊字符串
none
可以用作代理命令,以指定不将代理用于给定的域模式。 这对于从代理使用中排除防火墙内的服务器,同时默认为外部域的公共代理很有用。 - core.sshCommand
-
如果设置了此变量,则
git fetch
和git push
在需要连接到远程系统时将使用指定的命令而不是ssh
。 该命令的格式与GIT_SSH_COMMAND
环境变量相同,并且在设置环境变量时会被覆盖。 - core.ignoreStat
-
如果为 true,则 Git 将避免使用 lstat() 调用来检测文件是否已更改,方法是为那些它在索引和工作树中以相同方式更新的被跟踪文件设置“assume-unchanged”位。
当在 Git 外部修改文件时,用户需要显式暂存已修改的文件(例如,请参阅 git-update-index[1] 中的示例部分)。 Git 通常不会检测到对这些文件的更改。
这在 lstat() 调用非常慢的系统上很有用,例如 CIFS/Microsoft Windows。
默认为 False。
- core.preferSymlinkRefs
-
不使用 HEAD 和其他符号引用文件的默认 "symref" 格式,而是使用符号链接。有时需要这样做才能与期望 HEAD 是符号链接的旧脚本兼容。
- core.alternateRefsCommand
-
当从备用仓库发布可用历史记录的提示时,使用 shell 执行指定的命令,而不是 git-for-each-ref[1]。第一个参数是备用仓库的绝对路径。输出必须包含每行一个十六进制对象 ID (即与
git for-each-ref --format='%(objectname)'
产生的输出相同)。请注意,通常不能将
git for-each-ref
直接放入配置值中,因为它不接受仓库路径作为参数(但您可以将上面的命令包装在 shell 脚本中)。 - core.alternateRefsPrefixes
-
当列出备用仓库的引用时,仅列出以给定前缀开头的引用。前缀的匹配方式与作为 git-for-each-ref[1] 的参数给出时相同。要列出多个前缀,请用空格分隔它们。如果设置了
core.alternateRefsCommand
,则设置core.alternateRefsPrefixes
无效。 - core.bare
-
如果为 true,则假定此仓库为裸仓库,并且没有与之关联的工作目录。如果这种情况发生,则会禁用许多需要工作目录的命令,例如 git-add[1] 或 git-merge[1]。
此设置由 git-clone[1] 或 git-init[1] 在创建仓库时自动猜测。默认情况下,以 "/.git" 结尾的仓库被假定为非裸仓库(bare = false),而所有其他仓库被假定为裸仓库(bare = true)。
- core.worktree
-
设置工作树根目录的路径。如果设置了
GIT_COMMON_DIR
环境变量,则忽略 core.worktree,并且不使用它来确定工作树的根目录。可以通过GIT_WORK_TREE
环境变量和--work-tree
命令行选项来覆盖此设置。该值可以是绝对路径,也可以是相对于 .git 目录路径的相对路径,该路径由 --git-dir 或 GIT_DIR 指定,或者自动发现。如果指定了 --git-dir 或 GIT_DIR,但没有指定 --work-tree、GIT_WORK_TREE 和 core.worktree 中的任何一个,则当前工作目录被视为工作树的顶层目录。请注意,即使在目录的 ".git" 子目录中的配置文件中设置了此变量,并且其值与后一个目录不同(例如,"/path/to/.git/config" 将 core.worktree 设置为 "/different/path"),该变量仍然有效,这很可能是一个错误配置。在 "/path/to" 目录中运行 Git 命令仍将使用 "/different/path" 作为工作树的根目录,并且可能会造成混淆,除非您知道自己在做什么(例如,您正在创建一个与仓库的常用工作树位置不同的同一索引的只读快照)。
- core.logAllRefUpdates
-
启用 reflog。 对引用 <ref> 的更新将记录到文件 "
$GIT_DIR/logs/<ref>
" 中,通过附加新的和旧的 SHA-1、日期/时间和更新原因,但仅当文件存在时。 如果此配置变量设置为true
,则会自动为分支头(即在refs/heads/
下)、远程引用(即在refs/remotes/
下)、注释引用(即在refs/notes/
下)和符号引用HEAD
创建缺失的 "$GIT_DIR/logs/<ref>
" 文件。 如果将其设置为always
,则会自动为refs/
下的任何引用创建缺失的 reflog。此信息可用于确定分支 "2 days ago" 的尖端提交是什么。
默认情况下,在与工作目录关联的仓库中,此值为 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 的引用名称不明确并且可能与仓库中的多个引用匹配时,Git 会向您发出警告。 默认为 True。
- core.compression
-
一个整数 -1..9,指示默认的压缩级别。 -1 是 zlib 默认值。 0 表示不压缩,1..9 是各种速度/大小权衡,9 是最慢的。 如果设置,则为其他压缩变量(例如
core.looseCompression
和pack.compression
)提供默认值。 - core.looseCompression
-
一个整数 -1..9,指示不在包文件中的对象的压缩级别。 -1 是 zlib 默认值。 0 表示不压缩,1..9 是各种速度/大小权衡,9 是最慢的。 如果未设置,则默认为 core.compression。 如果未设置,则默认为 1(最佳速度)。
- core.packedGitWindowSize
-
要映射到内存中的单个包文件字节数。 较大的窗口大小可以使您的系统更快地处理较小数量的大型包文件。 较小的窗口大小会对性能产生负面影响,因为增加了对操作系统内存管理器的调用,但在访问大量大型包文件时可能会提高性能。
如果在编译时设置了 NO_MMAP,则默认为 1 MiB,否则在 32 位平台上为 32 MiB,在 64 位平台上为 1 GiB。 这对于所有用户/操作系统都应该是合理的。 您可能不需要调整此值。
支持 k、m 或 g 的常用单位后缀。
- core.packedGitLimit
-
要同时从包文件映射到内存中的最大字节数。 如果 Git 需要一次访问超过此数量的字节才能完成操作,它将取消映射现有区域以回收进程中的虚拟地址空间。
在 32 位平台上默认为 256 MiB,在 64 位平台上默认为 32 TiB(实际上是无限的)。 除了最大的项目外,这对于所有用户/操作系统都应该是合理的。 您可能不需要调整此值。
支持 k、m 或 g 的常用单位后缀。
- core.deltaBaseCacheLimit
-
每个线程要保留的用于缓存可能被多个差异对象引用的基本对象的最大字节数。 通过将整个解压缩的基本对象存储在缓存中,Git 可以避免多次解包和解压缩常用基本对象。
在所有平台上默认为 96 MiB。 除了最大的项目外,这对于所有用户/操作系统都应该是合理的。 您可能不需要调整此值。
支持 k、m 或 g 的常用单位后缀。
- core.bigFileThreshold
-
被视为“大”的文件的大小,如下所述,它会更改许多 git 命令的行为,以及这些文件在仓库中的存储方式。 默认值为 512 MiB。 支持 k、m 或 g 的常用单位后缀。
超过配置限制的文件将是
-
以 deflated 方式存储在包文件中,而不尝试增量压缩。
默认限制主要是在考虑此用例的情况下设置的。 使用它,大多数项目将对其源代码和其他文本文件进行增量压缩,但不压缩较大的二进制媒体文件。
存储没有增量压缩的大文件可以避免过度使用内存,但会略微增加磁盘使用量。
-
将被视为已标记为“二进制”(请参见 gitattributes[5])。 例如,git-log[1] 和 git-diff[1] 不会计算超过此限制的文件的差异。
-
通常会在写入时进行流式传输,这可以避免过度使用内存,但会增加一些固定的开销。 使用此命令的命令包括 git-archive[1]、git-fast-import[1]、git-index-pack[1]、git-unpack-objects[1] 和 git-fsck[1]。
-
- core.excludesFile
-
指定文件的路径名,该文件包含描述不应跟踪的路径的模式,除了
.gitignore
(每个目录)和.git/info/exclude
之外。 默认为$XDG_CONFIG_HOME/git/ignore
。 如果未设置或为空,则使用$HOME/.config/git/ignore
。 请参见 gitignore[5]。 - core.askPass
-
一些命令(例如 svn 和 http 接口)以交互方式询问密码,可以告诉它们使用通过此变量的值给出的外部程序。 可以被
GIT_ASKPASS
环境变量覆盖。 如果未设置,则回退到SSH_ASKPASS
环境变量的值,如果失败,则回退到简单的密码提示。 外部程序应以命令行参数的形式给出适当的提示,并在其 STDOUT 上写入密码。 - core.attributesFile
-
除了
.gitattributes
(每个目录) 和.git/info/attributes
之外,Git 还会在此文件中查找属性 (请参阅 gitattributes[5])。路径扩展的方式与core.excludesFile
相同。其默认值为$XDG_CONFIG_HOME/git/attributes
。如果$XDG_CONFIG_HOME
未设置或为空,则使用$HOME/.config/git/attributes
代替。 - core.hooksPath
-
默认情况下,Git 将在
$GIT_DIR/hooks
目录中查找您的钩子。将其设置为不同的路径,例如/etc/git/hooks
,Git 将尝试在该目录中查找您的钩子,例如/etc/git/hooks/pre-receive
而不是$GIT_DIR/hooks/pre-receive
。该路径可以是绝对路径或相对路径。相对路径被视为相对于运行钩子的目录(请参阅 githooks[5] 的“描述”部分)。
如果您希望集中配置您的 Git 钩子,而不是基于每个存储库进行配置,或者作为
init.templateDir
的更灵活和集中的替代方案(您已经在其中更改了默认钩子),则此配置变量非常有用。 - core.editor
-
诸如
commit
和tag
之类的命令,允许您通过启动编辑器来编辑消息,当此变量设置并且环境变量GIT_EDITOR
未设置时,将使用此变量的值。请参阅 git-var[1]。 - core.commentChar
- core.commentString
-
诸如
commit
和tag
之类的命令,允许您编辑消息,并且会将以此字符开头的行视为注释,并在编辑器返回后将其删除(默认为 *#*)。如果设置为 "auto",则
git-commit
将选择一个字符,该字符不是现有提交消息中任何行的起始字符。请注意,这两个变量是彼此的别名,在现代版本的 Git 中,您可以自由地将字符串(例如,
//
或⁑⁕⁑
)与commentChar
一起使用。 v2.45.0 之前的 Git 版本将忽略commentString
,但会拒绝由多个 ASCII 字节组成的commentChar
值。 如果您计划将配置与较旧和较新的 Git 版本一起使用,您可能需要同时指定这两者[core] # single character for older versions commentChar = "#" # string for newer versions (which will override commentChar # because it comes later in the file) commentString = "//"
- core.filesRefLockTimeout
-
尝试锁定单个引用时重试的时间长度(以毫秒为单位)。值 0 表示根本不重试; -1 表示无限期重试。 默认值为 100(即,重试 100 毫秒)。
- core.packedRefsTimeout
-
尝试锁定
packed-refs
文件时重试的时间长度(以毫秒为单位)。值 0 表示根本不重试; -1 表示无限期重试。 默认值为 1000(即,重试 1 秒)。 - core.pager
-
Git 命令使用的文本查看器(例如,less)。该值应由 shell 解释。优先级顺序为
$GIT_PAGER
环境变量,然后是core.pager
配置,然后是$PAGER
,然后是编译时选择的默认值(通常是 less)。当
LESS
环境变量未设置时,Git 会将其设置为FRX
(如果LESS
环境变量已设置,Git 则根本不会更改它)。如果您想有选择地覆盖 Git 对LESS
的默认设置,您可以将core.pager
设置为例如less -S
。这将被 Git 传递给 shell,shell 会将最终命令转换为LESS=FRX less -S
。 环境不会设置S
选项,但命令行会设置,指示 less 截断长行。 类似地,将core.pager
设置为less -+F
将从命令行禁用由环境指定的F
选项,从而禁用less
的“如果一屏则退出”行为。 可以专门为特定命令激活某些标志:例如,将pager.blame
设置为less -S
仅为git blame
启用行截断。同样,当
LV
环境变量未设置时,Git 会将其设置为-c
。您可以通过导出LV
并使用另一个值或将core.pager
设置为lv +c
来覆盖此设置。 - core.whitespace
-
要注意的常见空格问题的逗号分隔列表。 git diff 将使用
color.diff.whitespace
来突出显示它们,而 git apply --whitespace=error 会将它们视为错误。 您可以添加-
前缀来禁用其中任何一个(例如-trailing-space
)-
blank-at-eol
将行尾的尾随空格视为错误(默认启用)。 -
space-before-tab
将行初始缩进部分中紧接在制表符之前的空格字符视为错误(默认启用)。 -
indent-with-non-tab
将使用空格字符而不是等效制表符缩进的行视为错误(默认不启用)。 -
tab-in-indent
将行初始缩进部分中的制表符视为错误(默认不启用)。 -
blank-at-eof
将添加到文件末尾的空白行视为错误(默认启用)。 -
trailing-space
是涵盖blank-at-eol
和blank-at-eof
的简写形式。 -
cr-at-eol
将行尾的回车符视为行终止符的一部分,也就是说,如果此类回车符之前的字符不是空格,则trailing-space
不会触发(默认不启用)。 -
tabwidth=<n>
指示制表符占据多少个字符位置;这与indent-with-non-tab
相关,以及 Git 何时修复tab-in-indent
错误。 默认制表符宽度为 8。允许的值为 1 到 63。
-
- core.fsync
-
应通过 core.fsyncMethod 加固的存储库组件的逗号分隔列表(在创建或修改时)。您可以通过在任何组件前加上 *-* 来禁用对该组件的加固。如果系统发生不干净的关机,未加固的项目可能会丢失。除非您有特殊要求,否则建议您将此选项留空或选择
committed
、added
或all
之一。当遇到此配置时,组件集从平台默认值开始,删除禁用的组件,并添加其他组件。
none
重置状态,以便忽略平台默认值。空字符串将 fsync 配置重置为平台默认值。 大多数平台上的默认值等效于
core.fsync=committed,-loose-object
,它具有良好的性能,但在系统发生不干净的关机时,存在丢失最近工作的风险。-
none
清除 fsync 组件集。 -
loose-object
加固以 loose-object 形式添加到存储库的对象。 -
pack
加固以 packfile 形式添加到存储库的对象。 -
pack-metadata
加固 packfile 位图和索引。 -
commit-graph
加固 commit-graph 文件。 -
index
在索引被修改时加固索引。 -
objects
是一个聚合选项,相当于loose-object,pack
。 -
reference
加固在存储库中修改的引用。 -
derived-metadata
是一个聚合选项,相当于pack-metadata,commit-graph
。 -
committed
是一个聚合选项,目前相当于objects
。 这种模式牺牲了一些性能,以确保使用git commit
或类似命令提交到存储库的工作得到加固。 -
added
是一个聚合选项,目前相当于committed,index
。 这种模式牺牲了额外的性能,以确保像git add
和类似操作的结果得到加固。 -
all
是一个聚合选项,用于同步上述所有单个组件。
-
- core.fsyncMethod
-
一个值,指示 Git 将使用哪种策略来使用 fsync 和相关原语来加固存储库数据。
-
fsync
使用 fsync() 系统调用或平台等效项。 -
writeout-only
发出 pagecache 写回请求,但根据文件系统和存储硬件,添加到存储库的数据在系统崩溃时可能无法持久。 这是 macOS 上的默认模式。 -
batch
启用一种模式,该模式使用 writeout-only 刷新将多个更新暂存到磁盘写回缓存中,然后对一个虚拟文件进行一次完整的 fsync,以触发操作结束时的磁盘缓存刷新。目前,
batch
模式仅适用于 loose-object 文件。 其他存储库数据被持久化,就像指定了fsync
一样。 对于存储在 HFS+ 或 APFS 文件系统上的 macOS 上的存储库,以及存储在 NTFS 或 ReFS 文件系统上的 Windows 上的存储库,预计此模式与fsync
一样安全。
-
- core.fsyncObjectFiles
-
此布尔值将在写入对象文件时启用 _fsync()_。 此设置已弃用。 请改用 core.fsync。
此设置会影响以 loose-object 形式添加到 Git 存储库的数据。 当设置为 true 时,Git 将发出 fsync 或类似的系统调用来刷新缓存,以便 loose-objects 在系统发生不干净的关机时保持一致。
- core.preloadIndex
-
启用并行索引预加载,用于像 _git diff_ 这样的操作
这可以加快 _git diff_ 和 _git status_ 等操作,尤其是在像 NFS 这样的文件系统上,这些文件系统的缓存语义较弱,因此 IO 延迟相对较高。 启用后,Git 将并行执行索引与文件系统数据的比较,从而允许 IO 重叠。 默认为 true。
- core.unsetenvvars
-
仅限 Windows:需要在生成任何其他进程之前取消设置的环境变量名称的逗号分隔列表。 默认为
PERL5LIB
,以说明 Git for Windows 坚持使用其自己的 Perl 解释器这一事实。 - core.restrictinheritedhandles
-
仅限 Windows:覆盖生成的进程是否仅继承标准文件句柄(
stdin
、stdout
和stderr
)或所有句柄。 可以是auto
、true
或false
。 默认为auto
,这意味着在 Windows 7 及更高版本上为true
,在较旧的 Windows 版本上为false
。 - core.createObject
-
您可以将其设置为 *link*,在这种情况下,硬链接之后删除源文件用于确保对象创建不会覆盖现有对象。
在某些文件系统/操作系统组合上,此设置可能不可靠。请将此配置项设置为rename;但是,这将移除用于确保现有目标文件不会被覆盖的检查。
- core.notesRef
-
在显示提交消息时,也显示存储在给定 ref 中的注释。该 ref 必须是完全限定的。如果给定的 ref 不存在,则不会报错,而是表示不应打印任何注释。
此设置默认为 "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 文件来使用单个索引跟踪多个 pack 文件。 有关更多信息,请参阅 git-multi-pack-index[1]。 默认为 true。
- core.sparseCheckout
-
启用 "sparse checkout" 功能。有关更多信息,请参阅 git-sparse-checkout[1]。
- core.sparseCheckoutCone
-
启用 sparse checkout 功能的 "cone 模式"。 当 sparse-checkout 文件包含有限的模式集合时,此模式可提供显著的性能优势。 可以通过将此变量设置为 *false* 来请求 "non-cone 模式" 以允许指定更灵活的模式。 有关更多信息,请参阅 git-sparse-checkout[1]。
- core.abbrev
-
设置对象名称的缩写长度。 如果未指定或设置为 "auto",则会根据存储库中打包对象的大致数量计算一个适当的值,希望这个值足以使缩写的对象名称在一段时间内保持唯一。 如果设置为 "no",则不进行缩写,并以完整长度显示对象名称。 最小长度为 4。
- core.maxTreeDepth
-
Git 在遍历树时愿意递归的最大深度(例如,"a/b/cde/f" 的深度为 4)。 这是一个故障安全措施,允许 Git 干净地中止,通常不需要调整。 当 Git 使用 MSVC 编译时,默认值为 512。 否则,默认值为 2048。
- credential.helper
-
指定一个外部 helper,当需要用户名或密码凭据时调用它;该 helper 可能会查阅外部存储以避免提示用户输入凭据。 这通常是凭据 helper 的名称,可能带有参数,但也可能是带有参数的绝对路径,或者,如果以
!
开头,则是 shell 命令。请注意,可以定义多个 helper。 有关详细信息和示例,请参见 gitcredentials[7]。
- credential.interactive
-
默认情况下,当需要新凭据时,Git 和任何已配置的凭据 helper 将要求用户输入。 如果这些凭据仍然有效,则许多这些 helper 将基于存储的凭据成功。 为了避免 Git 的用户交互,请设置
credential.interactive=false
。 某些凭据助手也遵循此选项。 - credential.useHttpPath
-
获取凭据时,认为 http 或 https URL 的 "path" 组件很重要。 默认为 false。 有关更多信息,请参见 gitcredentials[7]。
- credential.sanitizePrompt
-
默认情况下,作为密码提示的一部分显示的用户名称和主机名不允许包含控制字符(默认情况下将对其进行 URL 编码)。 将此设置配置为
false
以覆盖该行为。 - credential.protectProtocol
-
默认情况下,当 Git 与凭据助手通信时,协议中不允许使用回车字符。 此设置允许用户覆盖此默认设置。
- credential.username
-
如果未为网络身份验证设置用户名,则默认使用此用户名。 请参见下面的 credential.<context>.* 以及 gitcredentials[7]。
- credential.<url>.*
-
上面的任何 credential.* 选项都可以有选择地应用于某些凭据。 例如,"credential.https://example.com.username" 将仅为与 example.com 的 https 连接设置默认用户名。 有关 URL 如何匹配的详细信息,请参见 gitcredentials[7]。
- credentialCache.ignoreSIGHUP
-
告诉 git-credential-cache--daemon 忽略 SIGHUP,而不是退出。
- credentialStore.lockTimeoutMS
-
git-credential-store 尝试锁定凭据文件时重试的持续时间(以毫秒为单位)。 值为 0 表示根本不重试;值为 -1 表示无限期地重试。 默认值为 1000(即,重试 1 秒)。
-
diff.autoRefreshIndex
-
当使用
git diff
与工作目录文件进行比较时,不要将仅状态的更改视为已更改。 相反,静默运行git update-index --refresh
以更新工作目录中内容与索引中内容匹配的路径的缓存状态信息。 此选项默认为true
。 请注意,这仅影响git diff
的高级命令,而不影响较低级别的diff
命令(例如git diff-files
)。 -
diff.dirstat
-
一个逗号分隔的
--dirstat
参数列表,指定 git-diff[1] 及其同类命令的--dirstat
选项的默认行为。 默认值可以在命令行中覆盖(使用--dirstat=<param>,...
)。 备用默认值(当diff.dirstat
未更改时)为changes,noncumulative,3
。 以下参数可用-
changes
-
通过统计从源中删除或添加到目标的行来计算 dirstat 数字。 这会忽略文件中的纯代码移动量。 换句话说,重新排列文件中的行与进行其他更改的计数方式不同。 这是未给出任何参数时的默认行为。
-
lines
-
通过执行常规的基于行的 diff 分析并对已删除/添加的行数进行求和来计算 dirstat 数字。 (对于二进制文件,计算 64 字节的块,因为二进制文件没有行的自然概念)。 这是一个比
changes
行为更昂贵的--dirstat
行为,但它确实像其他更改一样计算文件中的重新排列行。 生成的输出与您从其他--*stat
选项获得的结果一致。 -
files
-
通过计算已更改的文件数来计算 dirstat 数字。 每个已更改的文件在 dirstat 分析中都同等计数。 这是计算成本最低的
--dirstat
行为,因为它根本不必查看文件内容。 -
cumulative
-
也为父目录计算子目录中的更改。 请注意,当使用
cumulative
时,报告的百分比总和可能超过 100%。 默认(非累积)行为可以使用noncumulative
参数指定。 - <limit>
-
整数参数指定一个截止百分比(默认为 3%)。 贡献小于此更改百分比的目录不会显示在输出中。
示例:以下将计算已更改的文件,同时忽略更改文件总数小于 10% 的目录,并将子目录计数累积到父目录中:
files,10,cumulative
。 -
-
diff.statNameWidth
-
限制
--stat
输出中文件名部分的宽度。 如果设置,则适用于生成--stat
输出的所有命令,但format-patch
除外。 -
diff.statGraphWidth
-
限制
--stat
输出中图形部分的宽度。 如果设置,则适用于生成--stat
输出的所有命令,但format-patch
除外。 -
diff.context
-
生成带有 <n> 行上下文的 diff,而不是默认的 3 行。 此值被
-U
选项覆盖。 -
diff.interHunkContext
-
显示 diff hunk 之间的上下文,最多为指定的行数,从而融合彼此靠近的 hunk。 该值用作
--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
的默认值。 请注意,这仅影响git diff
的高级命令,而不影响较低级别的diff
命令(例如git diff-files
)。 当报告未提交的更改时,git checkout
和git switch
也接受此设置。 将其设置为all
会禁用git commit
和git status
通常显示的子模块摘要(当status.submoduleSummary
设置时),除非使用--ignore-submodules
命令行选项覆盖它。git submodule
命令不受此设置的影响。 默认情况下,这设置为 untracked,以便忽略任何未跟踪的子模块。 -
diff.mnemonicPrefix
-
如果设置,
git diff
使用的 prefix 对不同于标准的a/
和b/
,具体取决于比较的内容。 当此配置生效时,反向 diff 输出也会交换前缀的顺序 -
diff.noPrefix
-
如果设置,
git diff
不会显示任何源或目标前缀。 -
diff.srcPrefix
-
如果设置,
git diff
使用此源前缀。默认为a/
。 -
diff.dstPrefix
-
如果设置,
git diff
使用此目标前缀。默认为b/
。 -
diff.relative
-
如果设置为
true
,git diff
不显示目录外的更改,并显示相对于当前目录的路径名。 -
diff.orderFile
-
文件,指示如何在差异中对文件进行排序。 有关详细信息,请参阅 git-diff[1] 的
-O
选项。 如果diff.orderFile
是相对路径名,则将其视为相对于工作树的顶部。 -
diff.renameLimit
-
在复制/重命名检测的详尽部分中要考虑的文件数; 等效于
git diff
选项-l
。 如果未设置,则默认值当前为 1000。 如果关闭了重命名检测,则此设置无效。 -
diff.renames
-
Git 是否以及如何检测重命名。 如果设置为
false
,则禁用重命名检测。 如果设置为true
,则启用基本重命名检测。 如果设置为copies
或copy
,Git 也会检测副本。 默认为true
。 请注意,这仅影响 git-diff[1] 和 git-log[1] 等git diff
瓷器,而不影响 git-diff-files[1] 等较低级别的命令。 -
diff.suppressBlankEmpty
-
一个布尔值,用于抑制在每个空输出行之前打印空格的标准行为。 默认为
false
。 -
diff.submodule
-
指定显示子模块差异的格式。
short
格式仅显示范围开头和结尾的提交名称。log
格式列出范围内的提交,如 git-submodule[1]summary
所做的那样。diff
格式显示子模块更改内容的内联差异。 默认为short
。 -
diff.wordRegex
-
用于确定在执行逐字差异计算时什么是“单词”的 POSIX 扩展正则表达式。 匹配正则表达式的字符序列是“单词”,所有其他字符都是可忽略的空格。
-
diff.<driver>.command
-
自定义差异驱动程序命令。 有关详细信息,请参见 gitattributes[5]。
-
diff.<driver>.trustExitCode
-
如果此布尔值设置为
true
,则如果diff.<driver>.command
命令认为输入文件相等,则应返回退出代码 0;如果认为它们不同,则应返回 1,如diff
(1)。 如果设置为false
(这是默认值),则无论是否相等,该命令都应返回退出代码 0。 任何其他退出代码都会导致 Git 报告致命错误。 -
diff.<driver>.xfuncname
-
diff 驱动程序应用于识别块标头的正则表达式。 也可以使用内置模式。 有关详细信息,请参见 gitattributes[5]。
-
diff.<driver>.binary
-
将此选项设置为
true
以使 diff 驱动程序将文件视为二进制文件。 有关详细信息,请参见 gitattributes[5]。 -
diff.<driver>.textconv
-
diff 驱动程序应调用以生成文件的文本转换版本的命令。 转换的结果用于生成人类可读的差异。 有关详细信息,请参见 gitattributes[5]。
-
diff.<driver>.wordRegex
-
diff 驱动程序应用于拆分行中单词的正则表达式。 有关详细信息,请参见 gitattributes[5]。
-
diff.<driver>.cachetextconv
-
将此选项设置为
true
以使 diff 驱动程序缓存文本转换输出。 有关详细信息,请参见 gitattributes[5]。 -
diff.indentHeuristic
-
将此选项设置为
false
以禁用默认启发式算法,该算法会移动差异块边界以使补丁更易于阅读。 -
diff.algorithm
-
选择一种差异算法。 变体如下:
-
diff.wsErrorHighlight
-
突出显示差异的
context
、old
或new
行中的空格错误。 多个值以逗号分隔,none
重置先前的值,default
将列表重置为new
,all
是old,new,context
的简写。 空格错误以color.diff.whitespace
着色。 命令行选项--ws-error-highlight=<kind>
覆盖此设置。 -
diff.colorMoved
-
如果设置为有效的 <mode> 或
true
值,则差异中移动的行将以不同的颜色显示。 有关有效模式的详细信息,请参见 git-diff[1] 中的--color-moved
。 如果仅设置为true
,则将使用默认颜色模式。 设置为false
时,移动的行不会着色。 -
diff.colorMovedWS
-
当使用例如
diff.colorMoved
设置对移动的行进行着色时,此选项控制空格的处理模式。 有关有效模式的详细信息,请参见 git-diff[1] 中的--color-moved-ws
。 - diff.tool
-
控制 git-difftool[1] 使用的差异工具。 此变量会覆盖
merge.tool
中配置的值。 下面的列表显示了有效的内置值。 任何其他值都被视为自定义差异工具,并且需要定义相应的 difftool.<tool>.cmd 变量。 - diff.guitool
-
当指定 -g/--gui 标志时,控制 git-difftool[1] 使用的差异工具。 此变量会覆盖
merge.guitool
中配置的值。 下面的列表显示了有效的内置值。 任何其他值都被视为自定义差异工具,并且需要定义相应的 difftool.<guitool>.cmd 变量。-
araxis
-
bc
-
codecompare
-
deltawalker
-
diffmerge
-
diffuse
-
ecmerge
-
emerge
-
examdiff
-
guiffy
-
gvimdiff
-
kdiff3
-
kompare
-
meld
-
nvimdiff
-
opendiff
-
p4merge
-
smerge
-
tkdiff
-
vimdiff
-
vscode
-
winmerge
-
xxdiff
-
- difftool.<tool>.cmd
-
指定调用指定差异工具的命令。 指定的命令在 shell 中使用以下变量进行评估:LOCAL 设置为包含差异 pre-image 内容的临时文件的名称,REMOTE 设置为包含差异 post-image 内容的临时文件的名称。
有关更多详细信息,请参见 git-difftool[1] 中的
--tool=<tool>
选项。 - difftool.<tool>.path
-
覆盖给定工具的路径。 如果您的工具不在 PATH 中,这将很有用。
- difftool.trustExitCode
-
如果调用的差异工具返回非零退出状态,则退出 difftool。
有关更多详细信息,请参见 git-difftool[1] 中的
--trust-exit-code
选项。 - difftool.prompt
-
在每次调用差异工具之前提示。
- difftool.guiDefault
-
设置为
true
以默认使用diff.guitool
(等效于指定--gui
参数),或设置为auto
以根据是否存在DISPLAY
环境变量值来选择diff.guitool
或diff.tool
。 默认值为false
,其中必须显式提供--gui
参数才能使用diff.guitool
。 - extensions.*
-
除非另有说明,否则如果
core.repositoryFormatVersion
不是1
,则指定扩展名是错误的。 参见 gitrepository-layout[5]。- compatObjectFormat
-
指定要使用的兼容哈希算法。可接受的值为
sha1
和sha256
。指定的值必须与extensions.objectFormat
的值不同。这允许客户端级别在 git 仓库之间进行互操作,这些仓库的 objectFormat 与此 compatObjectFormat 匹配。 特别是,当完全实现后,从 objectFormat 与 compatObjectFormat 匹配的仓库推送和拉取。 除了能够使用以 objectFormat 编码的 oid 外,还能够使用以 compatObjectFormat 编码的 oid 来本地指定对象。 - noop
-
此扩展完全不改变 git 的行为。它仅用于测试 format-1 兼容性。
由于历史原因,无论
core.repositoryFormatVersion
设置如何,此扩展都有效。 - noop-v1
-
此扩展完全不改变 git 的行为。它仅用于测试 format-1 兼容性。
- objectFormat
-
指定要使用的哈希算法。可接受的值为
sha1
和sha256
。如果未指定,则假定为sha1
。请注意,此设置应仅由 git-init[1] 或 git-clone[1] 设置。尝试在初始化后更改它将不起作用,并且会产生难以诊断的问题。
- partialClone
-
启用后,表示仓库是通过部分克隆创建的(或稍后执行了部分获取),并且远程可能省略了发送某些不需要的对象。 这样的远程调用称为“承诺者远程”,它承诺将来可以从中获取所有此类省略的对象。
此键的值是承诺者远程的名称。
由于历史原因,无论
core.repositoryFormatVersion
设置如何,此扩展都有效。 - preciousObjects
-
如果启用,则表示仓库中的对象绝对不能被删除(例如,通过
git-prune
或git repack -d
)。由于历史原因,无论
core.repositoryFormatVersion
设置如何,此扩展都有效。 - refStorage
-
指定要使用的 ref 存储格式。可接受的值为
-
files
用于带有 packed-refs 的松散文件。 这是默认设置。 -
reftable
用于 reftable 格式。 此格式是实验性的,其内部结构可能会发生变化。
请注意,此设置应仅由 git-init[1] 或 git-clone[1] 设置。尝试在初始化后更改它将不起作用,并且会产生难以诊断的问题。
-
- relativeWorktrees
-
如果启用,则表示至少有一个工作区已与相对路径链接。 如果使用
--relative-paths
选项或将worktree.useRelativePaths
配置设置为true
创建或修复了工作区,则会自动设置。 - 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
。
根据您对每个工作区可自定义的稀疏检出设置的需求,调整
core.sparseCheckout
和core.sparseCheckoutCone
的位置也可能是有益的。 默认情况下,git sparse-checkout
内置命令启用此扩展,在每个工作区的基础上分配这些配置值,并使用$GIT_DIR/info/sparse-checkout
文件来独立指定每个工作区的稀疏性。 有关更多详细信息,请参见 git-sparse-checkout[1]。+ 由于历史原因,无论
core.repositoryFormatVersion
设置如何,此扩展都有效。 -
- fastimport.unpackLimit
-
如果 git-fast-import[1] 导入的对象数量低于此限制,则这些对象将被解压缩到松散对象文件中。 但是,如果导入的对象的数量等于或超过此限制,则该 pack 将存储为一个 pack。 从快速导入存储 pack 可以使导入操作更快地完成,尤其是在慢速文件系统上。 如果未设置,则使用
transfer.unpackLimit
的值代替。 - feature.*
-
以
feature.
开头的配置设置会修改一组其他配置设置的默认值。 这些组由 Git 开发人员社区创建,作为推荐的默认值,并且可能会发生更改。 特别是,可能会添加具有不同默认值的新配置选项。 - feature.experimental
-
启用 Git 新增的配置选项,这些选项正在考虑作为未来的默认值。 此处包含的配置设置可能会在每个版本(包括次要版本更新)中添加或删除。 由于这些设置是全新的,因此可能会产生意外的交互。 如果您有兴趣提供有关实验性功能的反馈,请启用此设置。 新的默认值为
-
fetch.negotiationAlgorithm=skipping
可能会通过一次跳过更多提交来缩短获取协商时间,从而减少往返次数。 -
pack.useBitmapBoundaryTraversal=true
可能会通过减少遍历的对象来缩短位图遍历时间。 -
pack.allowPackReuse=multi
可能会通过重用来自多个 pack 而不仅仅是一个 pack 的对象来缩短创建 pack 所需的时间。
-
- feature.manyFiles
-
启用针对工作目录中包含大量文件的仓库进行优化的配置选项。 如果有很多文件,则
git status
和git checkout
等命令可能会很慢,而这些新默认值可以提高性能-
index.skipHash=true
通过不计算尾随校验和来加快索引写入速度。 请注意,这将导致早于 2.13.0 的 Git 版本拒绝解析该索引,并且早于 2.40.0 的 Git 版本将在git fsck
期间报告索引已损坏。 -
index.version=4
在索引中启用路径前缀压缩。 -
core.untrackedCache=true
启用未跟踪缓存。 此设置假定 mtime 在您的计算机上有效。
-
- fetch.recurseSubmodules
-
此选项控制
git fetch
(以及git pull
中的底层获取)是否将递归地获取到已填充的子模块中。 此选项可以设置为布尔值或 *on-demand*。 将其设置为布尔值会将 fetch 和 pull 的行为更改为:如果设置为 true,则无条件地递归到子模块中;如果设置为 false,则根本不递归。 当设置为 *on-demand* 时,fetch 和 pull 仅当其超级项目检索更新子模块引用的提交时才会递归到已填充的子模块中。 默认为 *on-demand*,如果设置了 *submodule.recurse*,则默认为该值。 - fetch.fsckObjects
-
如果设置为 true,则 git-fetch-pack 将检查所有获取的对象。 有关检查的内容,请参见
transfer.fsckObjects
。 默认为 false。 如果未设置,则使用transfer.fsckObjects
的值代替。 - fetch.fsck.<msg-id>
-
行为类似于
fsck.<msg-id>
,但由 git-fetch-pack[1] 而不是 git-fsck[1] 使用。 有关详细信息,请参见fsck.<msg-id>
文档。 - fetch.fsck.skipList
-
行为类似于
fsck.skipList
,但由 git-fetch-pack[1] 而不是 git-fsck[1] 使用。 有关详细信息,请参见fsck.skipList
文档。 - fetch.unpackLimit
-
如果通过 Git 本机传输获取的对象数量低于此限制,则这些对象将被解压缩到松散对象文件中。 但是,如果接收到的对象数量等于或超过此限制,则在添加任何缺失的增量基础之后,接收到的 pack 将存储为一个 pack。 从推送存储 pack 可以使推送操作更快地完成,尤其是在慢速文件系统上。 如果未设置,则使用
transfer.unpackLimit
的值代替。 - fetch.prune
-
如果为 true,则 fetch 将自动表现得好像在命令行上给出了
--prune
选项。 另请参见remote.<name>.prune
和 git-fetch[1] 的 PRUNING 部分。 - fetch.pruneTags
-
如果为 true,则当进行修剪时,fetch 将自动表现得好像提供了
refs/tags/*:refs/tags/*
refspec(如果尚未设置)。 这样可以同时设置此选项和fetch.prune
,以保持与上游 refs 的 1=1 映射。 另请参见remote.<name>.pruneTags
和 git-fetch[1] 的 PRUNING 部分。 - fetch.all
-
如果为 true,则 fetch 将尝试更新所有可用的远程仓库。 可以通过传递
--no-all
或显式指定一个或多个要从中获取的远程仓库来覆盖此行为。 默认为 false。 - fetch.output
-
控制如何打印 ref 更新状态。 有效值为
full
和compact
。 默认值为full
。 有关详细信息,请参见 git-fetch[1] 中的 OUTPUT 部分。 - fetch.negotiationAlgorithm
-
控制在协商要由服务器发送的 packfile 的内容时,如何发送有关本地仓库中提交的信息。 设置为“consecutive”以使用一种算法,该算法遍历连续的提交并检查每个提交。 设置为“skipping”以使用一种算法,该算法跳过提交以努力更快地收敛,但可能会导致大于必需的 packfile; 或设置为“noop”以不发送任何信息,这将几乎肯定会导致大于必需的 packfile,但会跳过协商步骤。 设置为“default”以覆盖先前所做的设置并使用默认行为。 默认值通常为“consecutive”,但如果
feature.experimental
为 true,则默认值为“skipping”。 未知值将导致 *git fetch* 报错。另请参见 git-fetch[1] 的
--negotiate-only
和--negotiation-tip
选项。 - fetch.showForcedUpdates
-
设置为 false 可以在 git-fetch[1] 和 git-pull[1] 命令中启用
--no-show-forced-updates
。默认为 true。 - fetch.parallel
-
指定一次并行运行的最大 fetch 操作数量(子模块,或者当 git-fetch[1] 的
--multiple
选项生效时,远程仓库)。值为 0 将给出一些合理的默认值。如果未设置,则默认为 1。
对于子模块,可以使用
submodule.fetchJobs
配置设置来覆盖此设置。 - fetch.writeCommitGraph
-
设置为 true,以便在每次
git fetch
命令从远程仓库下载一个 pack-file 之后,写入一个 commit-graph。使用--split
选项,大多数执行将会在现有的 commit-graph 文件之上创建一个非常小的 commit-graph 文件。偶尔,这些文件会合并,并且写入可能需要更长的时间。拥有一个更新的 commit-graph 文件有助于许多 Git 命令的性能,包括git merge-base
、git push -f
和git log --graph
。默认为 false。 - fetch.bundleURI
-
此值存储一个 URI,用于在从原始 Git 服务器执行增量 fetch 之前,从 bundle URI 下载 Git 对象数据。这类似于 git-clone[1] 中
--bundle-uri
选项的行为。如果提供的 bundle URI 包含一个为增量 fetch 组织的 bundle 列表,则git clone --bundle-uri
将设置fetch.bundleURI
值。如果您修改此值,并且您的仓库具有
fetch.bundleCreationToken
值,请在从新的 bundle URI 获取之前删除该fetch.bundleCreationToken
值。 - fetch.bundleCreationToken
-
当使用
fetch.bundleURI
从使用 "creationToken" 启发式的 bundle 列表进行增量 fetch 时,此配置值存储已下载 bundle 的最大creationToken
值。如果广告的creationToken
不严格大于此值,则此值用于防止将来下载 bundle。创建 token 值由提供特定 bundle URI 的提供程序选择。如果您在
fetch.bundleURI
处修改 URI,请务必在获取之前删除fetch.bundleCreationToken
值。 - filter.<driver>.clean
-
用于在检入时将工作区文件的内容转换为 blob 的命令。有关详细信息,请参见 gitattributes[5]。
- filter.<driver>.smudge
-
用于在检出时将 blob 对象的内容转换为工作区文件的命令。有关详细信息,请参见 gitattributes[5]。
- format.attach
-
启用 multipart/mixed 附件作为 *format-patch* 的默认设置。该值也可以是双引号字符串,它将启用附件作为默认设置并将该值设置为边界。请参见 git-format-patch[1] 中的 --attach 选项。要撤消先前的值,请将其设置为空字符串。
- format.from
-
为 format-patch 的
--from
选项提供默认值。接受布尔值,或名称和电子邮件地址。如果为 false,则 format-patch 默认为--no-from
,直接在补丁邮件的“From:”字段中使用提交作者。如果为 true,则 format-patch 默认为--from
,在补丁邮件的“From:”字段中使用您的提交者身份,如果不同,则在补丁邮件的正文中包含“From:”字段。如果设置为非布尔值,则 format-patch 使用该值而不是您的提交者身份。默认为 false。 - format.forceInBodyFrom
-
为 format-patch 的
--[no-]force-in-body-from
选项提供默认值。默认为 false。 - format.numbered
-
一个布尔值,可以在补丁主题中启用或禁用序列号。它默认为“auto”,仅当有多个补丁时才启用它。可以通过将其设置为“true”或“false”来为所有消息启用或禁用它。请参见 git-format-patch[1] 中的 --numbered 选项。
- format.headers
-
要包含在通过邮件提交的补丁中的其他电子邮件标头。请参见 git-format-patch[1]。
- format.to
- format.cc
-
要包含在通过邮件提交的补丁中的其他收件人。请参见 git-format-patch[1] 中的 --to 和 --cc 选项。
- format.subjectPrefix
-
format-patch 的默认设置是输出带有 *[PATCH]* 主题前缀的文件。使用此变量更改该前缀。
- format.coverFromDescription
-
format-patch 的默认模式,用于确定将使用分支的描述填充封面信的哪些部分。请参见 git-format-patch[1] 中的
--cover-from-description
选项。 - format.signature
-
format-patch 的默认设置是输出包含 Git 版本号的签名。使用此变量更改该默认设置。将此变量设置为空字符串("")以禁止生成签名。
- format.signatureFile
-
工作方式与 format.signature 类似,不同之处在于,此变量指定的文件内容将用作签名。
- format.suffix
-
format-patch 的默认设置是输出带有后缀
.patch
的文件。使用此变量更改该后缀(如果要包含点,请确保包含该点)。 - format.encodeEmailHeaders
-
使用 "Q-encoding"(在 RFC 2047 中描述)对具有非 ASCII 字符的电子邮件标头进行编码,以便进行电子邮件传输。默认为 true。
- format.pretty
-
log/show/whatchanged 命令的默认漂亮格式。请参见 git-log[1]、git-show[1]、git-whatchanged[1]。
- format.thread
-
git format-patch 的默认线程样式。可以是布尔值,也可以是
shallow
或deep
。shallow
线程将每封邮件都回复到系列的头部,其中头部按封面信、--in-reply-to
和第一封补丁邮件的顺序选择。deep
线程使每封邮件都回复到前一封邮件。true 布尔值与shallow
相同,false 值禁用线程。 - format.signOff
-
一个布尔值,可让您默认启用 format-patch 的
-s/--signoff
选项。 注意: 将Signed-off-by
预告片添加到补丁应该是一个有意识的行为,这意味着您证明您有权在相同的开源许可下提交此工作。 请参阅 *SubmittingPatches* 文档以进行进一步讨论。 - format.coverLetter
-
一个布尔值,用于控制在调用 format-patch 时是否生成封面信,此外还可以设置为“auto”,仅当有多个补丁时才生成封面信。默认为 false。
- format.outputDirectory
-
设置一个自定义目录来存储结果文件,而不是当前工作目录。将创建所有目录组件。
- format.filenameMaxLength
-
format-patch
命令生成的输出文件名的最大长度;默认为 64。可以被--filename-max-length=<n>
命令行选项覆盖。 - format.useAutoBase
-
一个布尔值,可让您默认启用 format-patch 的
--base=auto
选项。 也可以设置为“whenAble”,以允许在可以使用合适的 base 时启用--base=auto
,否则跳过添加 base 信息而不导致 format 崩溃。 - format.notes
-
为 format-patch 的
--notes
选项提供默认值。接受布尔值或指定从何处获取注释的 ref。如果为 false,则 format-patch 默认为--no-notes
。如果为 true,则 format-patch 默认为--notes
。如果设置为非布尔值,则 format-patch 默认为--notes=<ref>
,其中ref
是非布尔值。默认为 false。如果要使用 ref
refs/notes/true
,请使用该文字。可以多次指定此配置,以便包含多个注释 ref。 在这种情况下,它的行为类似于传递了多个
--[no-]notes[=]
选项。 也就是说,值为true
将显示默认注释,值为<ref>
也会显示来自该注释 ref 的注释,值为false
将否定先前的配置并且不显示注释。例如,
[format] notes = true notes = foo notes = false notes = bar
将仅显示来自
refs/notes/bar
的注释。 - format.mboxrd
-
一个布尔值,当使用
--stdout
时,启用强大的“mboxrd”格式来转义“^>+From ”行。 - format.noprefix
-
如果设置,则不在补丁中显示任何源或目标前缀。 这等效于
git diff
使用的diff.noprefix
选项(但format-patch
不遵循)。 请注意,通过设置此项,您生成的任何补丁的接收者都必须使用-p0
选项应用它们。 - fsck.<msg-id>
-
在 fsck 期间,Git 可能会发现旧版本数据存在问题,这些问题不会由当前版本的 Git 生成,并且如果设置了
transfer.fsckObjects
,也不会通过网络发送。此功能旨在支持处理包含此类数据的旧版本仓库。设置
fsck.<msg-id>
会被 git-fsck[1] 识别,但要接受推送此类数据,请改用receive.fsck.<msg-id>
设置;要克隆或抓取此类数据,请使用fetch.fsck.<msg-id>
设置。本文档的其余部分为了简洁起见,讨论的是
fsck.*
,但同样的原理也适用于对应的receive.fsck.*
和fetch.fsck.*
变量。与
color.ui
和core.editor
等变量不同,如果未设置receive.fsck.<msg-id>
和fetch.fsck.<msg-id>
变量,它们不会回退到fsck.<msg-id>
配置。要在不同情况下统一配置相同的 fsck 设置,所有这三个变量都必须设置为相同的值。设置
fsck.<msg-id>
后,可以通过配置fsck.<msg-id>
设置将错误切换为警告,反之亦然,其中<msg-id>
是 fsck 消息 ID,该值为error
、warn
或ignore
之一。为了方便起见,fsck 在错误/警告前添加了消息 ID 前缀,例如,“missingEmail: invalid author/committer line - missing email” 表示设置fsck.missingEmail = ignore
将隐藏该问题。一般来说,最好使用
fsck.skipList
枚举现有存在问题的对象,而不是列出这些问题对象共享的、需要忽略的断裂类型,因为这样做会导致相同断裂类型的新实例被忽略。设置未知的
fsck.<msg-id>
值会导致 fsck 退出,但对receive.fsck.<msg-id>
和fetch.fsck.<msg-id>
执行相同的操作只会导致 Git 发出警告。有关
<msg-id>
的支持值,请参见 git-fsck[1] 的“Fsck Messages”部分。 - fsck.skipList
-
指向对象名称列表(即每行一个未缩写的 SHA-1)的路径,这些对象已知以非致命方式损坏,应被忽略。 在 Git 2.20 及更高版本中,注释 (#)、空行以及任何前导和尾随空格都将被忽略。 除了每行一个 SHA-1 之外,在旧版本上所有内容都会出错。
当需要接受已建立的项目时,此功能非常有用,即使早期提交包含可以安全忽略的错误,例如无效的提交者电子邮件地址。 注意:无法使用此设置跳过损坏的对象。
与
fsck.<msg-id>
一样,此变量具有相应的receive.fsck.skipList
和fetch.fsck.skipList
变体。与
color.ui
和core.editor
等变量不同,如果未设置receive.fsck.skipList
和fetch.fsck.skipList
变量,它们不会回退到fsck.skipList
配置。要在不同情况下统一配置相同的 fsck 设置,所有这三个变量都必须设置为相同的值。较旧版本的 Git(2.20 之前)记录了对象名称列表应进行排序。 这从来都不是强制要求; 对象名称可以以任何顺序出现,但是在读取列表时,我们会跟踪该列表是否已排序以用于内部二进制搜索实现,这可以节省一些已排序列表的工作。 除非您有一个庞大的列表,否则没有理由专门预先对列表进行排序。 在 Git 2.20 版之后,使用哈希实现代替,因此现在没有理由预先对列表进行排序。
- fsmonitor.allowRemote
-
默认情况下,fsmonitor 守护程序拒绝与网络挂载的仓库一起工作。 将
fsmonitor.allowRemote
设置为true
会覆盖此行为。 只有在core.fsmonitor
设置为true
时才生效。 - fsmonitor.socketDir
-
如果设置了此 Mac OS 专用选项,则指定用于 fsmonitor 守护程序和各种 Git 命令之间进行通信的 Unix 域套接字的创建目录。 该目录必须位于本机 Mac OS 文件系统上。 只有在
core.fsmonitor
设置为true
时才生效。 - gc.aggressiveDepth
-
git gc --aggressive 使用的增量压缩算法中使用的深度参数。 默认值为 50,这是未使用
--aggressive
时--depth
选项的默认值。有关更多详细信息,请参见 git-repack[1] 中
--depth
选项的文档。 - gc.aggressiveWindow
-
git gc --aggressive 使用的增量压缩算法中使用的窗口大小参数。 默认值为 250,这比默认的
--window
值 10 更激进。有关更多详细信息,请参见 git-repack[1] 中
--window
选项的文档。 - gc.auto
-
当仓库中大约存在超过此数量的松散对象时,
git gc --auto
会将它们打包。 一些 Porcelain 命令会不时使用此命令执行轻量级的垃圾回收。 默认值为 6700。将此值设置为 0 不仅会禁用基于松散对象数量的自动打包,还会禁用
git gc --auto
将使用的任何其他启发式方法,以确定是否存在要完成的工作,例如gc.autoPackLimit
。 - gc.autoPackLimit
-
当仓库中存在超过此数量的未用
*.keep
文件标记的包时,git gc --auto
会将它们合并为一个更大的包。 默认值为 50。 将此值设置为 0 会禁用它。 将gc.auto
设置为 0 也会禁用此功能。请参阅下面的
gc.bigPackThreshold
配置变量。 使用时,它会影响自动打包限制的工作方式。 - gc.autoDetach
-
如果系统支持,则使
git gc --auto
立即返回并在后台运行。 默认值为 true。 此配置变量在未设置maintenance.autoDetach
的情况下充当回退。 - gc.bigPackThreshold
-
如果非零,则在运行
git gc
时,会保留所有大于此限制的非 cruft 包。 这与--keep-largest-pack
非常相似,只不过会保留所有满足阈值的非 cruft 包,而不仅仅是最大的包。 默认为零。 支持常用的单位后缀 k、m 或 g。请注意,如果保留的包数大于 gc.autoPackLimit,则将忽略此配置变量,除了基本包之外的所有包都将被重新打包。 之后,包的数量应低于 gc.autoPackLimit,并且应再次遵守 gc.bigPackThreshold。
如果估计的
git repack
平稳运行所需的内存量不可用,并且未设置gc.bigPackThreshold
,则也会排除最大的包(这等效于运行带有--keep-largest-pack
的git gc
)。 - gc.writeCommitGraph
-
如果为 true,则在运行 git-gc[1] 时,gc 将重写 commit-graph 文件。 使用
git gc --auto
时,如果需要进行内务管理,则将更新 commit-graph。 默认值为 true。 有关详细信息,请参见 git-commit-graph[1]。 - gc.logExpiry
-
如果文件 gc.log 存在,则
git gc --auto
将打印其内容并以状态零退出,除非该文件超过 gc.logExpiry 天。 默认为 "1.day"。 有关指定其值的更多方法,请参见gc.pruneExpire
。 - gc.packRefs
-
在仓库中运行
git pack-refs
会导致 1.5.1.2 之前的 Git 版本无法通过 HTTP 等简易传输协议克隆它。 此变量确定 git gc 是否运行git pack-refs
。 可以将其设置为notbare
以在所有非裸仓库中启用它,也可以将其设置为布尔值。 默认值为true
。 - gc.cruftPacks
-
将无法访问的对象存储在 cruft 包中(请参见 git-repack[1]),而不是作为松散对象。 默认值为
true
。 - gc.maxCruftSize
-
重新打包时限制新 cruft 包的大小。 如果除了
--max-cruft-size
之外还指定了此值,则命令行选项优先。 请参见 git-repack[1] 的--max-cruft-size
选项。 - gc.pruneExpire
-
运行 git gc 时,它将调用 prune --expire 2.weeks.ago(如果使用 cruft 包,则通过
gc.cruftPacks
或--cruft
调用 repack --cruft --cruft-expiration 2.weeks.ago)。 使用此配置变量覆盖宽限期。 值 "now" 可用于禁用此宽限期并立即修剪无法访问的对象,或者 "never" 可用于阻止修剪。 当 git gc 与写入仓库的另一个进程并发运行时,此功能有助于防止损坏; 请参见 git-gc[1] 的 "NOTES" 部分。 - gc.worktreePruneExpire
-
运行 git gc 时,它会调用 git worktree prune --expire 3.months.ago。 此配置变量可用于设置不同的宽限期。 值 "now" 可用于禁用宽限期并立即修剪
$GIT_DIR/worktrees
,或者 "never" 可用于阻止修剪。 - gc.reflogExpire
- gc.<pattern>.reflogExpire
-
git reflog expire 删除早于此时期的 reflog 条目; 默认为 90 天。 值 "now" 会立即过期所有条目,而 "never" 会完全阻止过期。 中间带有 "<pattern>"(例如 "refs/stash")的设置仅适用于与 <pattern> 匹配的引用。
- gc.reflogExpireUnreachable
- gc.<模式>.reflogExpireUnreachable
-
git reflog expire 删除早于此时间且无法从当前 tip 访问的 reflog 条目;默认为 30 天。“now” 值会立即过期所有条目,“never” 值会完全禁止过期。如果中间存在 “<模式>”(例如,“refs/stash”),则该设置仅适用于与 <模式> 匹配的引用。
这些类型的条目通常是使用
git commit --amend
或git rebase
的结果,并且是修改或变基发生之前的提交。由于这些更改不是当前项目的一部分,因此大多数用户希望更快地使其过期,这就是默认值比gc.reflogExpire
更激进的原因。 - gc.recentObjectsHook
-
在考虑是否删除对象时(无论是在生成 cruft pack 还是将无法访问的对象存储为 loose 对象),使用 shell 执行指定的命令。将其输出解释为对象 ID,Git 将这些 ID 视为“最近”的,无论其存在时间长短。通过将其 mtime 视为 “now”,输出中提到的任何对象(及其后代)都将被保留,而不管它们的真实存在时间。
输出必须每行仅包含一个十六进制对象 ID,并且不能包含其他内容。无法在存储库中找到的对象将被忽略。支持多个钩子,但所有钩子都必须成功退出,否则操作(生成 cruft pack 或解包无法访问的对象)将停止。
- gc.repackFilter
-
重新打包时,使用指定的过滤器将某些对象移动到单独的 packfile 中。请参阅 git-repack[1] 的
--filter=<filter-spec>
选项。 - gc.repackFilterTo
-
重新打包并使用过滤器时,请参阅
gc.repackFilter
,指定的位置将用于创建包含过滤掉的对象的 packfile。警告:指定的位置应该是可访问的,例如使用 Git alternates 机制,否则存储库可能会被 Git 认为已损坏,因为它可能无法访问该 packfile 中的对象。请参阅 git-repack[1] 的--filter-to=<dir>
选项和 gitrepository-layout[5] 的objects/info/alternates
部分。 - gc.rerereResolved
-
当运行 git rerere gc 时,您之前解决的冲突合并的记录将保留这些天数。您也可以使用更易于理解的 “1.month.ago” 等。默认为 60 天。请参阅 git-rerere[1]。
- gc.rerereUnresolved
-
当运行 git rerere gc 时,您尚未解决的冲突合并的记录将保留这些天数。您也可以使用更易于理解的 “1.month.ago” 等。默认为 15 天。请参阅 git-rerere[1]。
- gitcvs.commitMsgAnnotation
-
将此字符串附加到每条提交消息。设置为空字符串可禁用此功能。默认为 “via git-CVS emulator”。
- gitcvs.enabled
-
是否为此存储库启用 CVS 服务器接口。请参阅 git-cvsserver[1]。
- gitcvs.logFile
-
日志文件的路径,CVS 服务器接口会在其中记录各种内容。请参阅 git-cvsserver[1]。
- gitcvs.usecrlfattr
-
如果为 true,则服务器将查找文件的行尾转换属性,以确定要使用的
-k
模式。如果属性强制 Git 将文件视为文本,则-k
模式将留空,以便 CVS 客户端将其视为文本。如果它们阻止文本转换,则该文件将设置为 -kb 模式,这将阻止客户端可能执行的任何换行符修改。如果属性不允许确定文件类型,则使用gitcvs.allBinary
。请参阅 gitattributes[5]。 - gitcvs.allBinary
-
如果
gitcvs.usecrlfattr
无法解析要使用的正确 -kb 模式,则使用此选项。如果为 true,则所有未解析的文件都以模式 -kb 发送到客户端。这会导致客户端将其视为二进制文件,从而阻止其可能执行的任何换行符修改。或者,如果将其设置为“guess”,则会检查文件的内容以确定其是否为二进制文件,类似于core.autocrlf
。 - gitcvs.dbName
-
git-cvsserver 使用的数据库,用于缓存从 Git 存储库派生的修订信息。确切含义取决于使用的数据库驱动程序,对于 SQLite(默认驱动程序),这是一个文件名。支持变量替换(有关详细信息,请参阅 git-cvsserver[1])。不得包含分号 (
;
)。默认值:%Ggitcvs.%m.sqlite - gitcvs.dbDriver
-
使用的 Perl DBI 驱动程序。您可以在此处指定任何可用的驱动程序,但它可能无法正常工作。git-cvsserver 经过 DBD::SQLite 测试,报告可以使用 DBD::Pg,并且报告无法使用 DBD::mysql。实验性功能。不得包含双冒号 (
:
)。默认值:SQLite。请参阅 git-cvsserver[1]。 - gitcvs.dbUser, gitcvs.dbPass
-
数据库用户和密码。仅在设置
gitcvs.dbDriver
时有用,因为 SQLite 没有数据库用户和/或密码的概念。gitcvs.dbUser 支持变量替换(有关详细信息,请参阅 git-cvsserver[1])。 - gitcvs.dbTableNamePrefix
-
数据库表名前缀。添加到任何使用的数据库表的名称,允许单个数据库用于多个存储库。支持变量替换(有关详细信息,请参阅 git-cvsserver[1])。任何非字母字符都将被替换为下划线。
除了 gitcvs.usecrlfattr
和 gitcvs.allBinary
之外的所有 gitcvs 变量也可以指定为 gitcvs.<访问方法>.<变量名>(其中 access_method 是 “ext” 和 “pserver” 之一),以使它们仅适用于给定的访问方法。
- gitweb.category
- gitweb.description
- gitweb.owner
- gitweb.url
-
请参阅 gitweb[1] 以获取说明。
- gitweb.avatar
- gitweb.blame
- gitweb.grep
- gitweb.highlight
- gitweb.patches
- gitweb.pickaxe
- gitweb.remote_heads
- gitweb.showSizes
- gitweb.snapshot
-
请参阅 gitweb.conf[5] 以获取说明。
- gpg.program
-
在制作或验证 PGP 签名时,使用此自定义程序而不是在
$PATH
上找到的 "gpg
"。该程序必须支持与 GPG 相同的命令行接口,即,要验证分离的签名,运行 "gpg --verify $signature - <$file
",并且该程序应通过以代码 0 退出来表示签名良好。要生成 ASCII 编码的分离签名,将 "gpg -bsau $key
" 的标准输入提供要签名的内容,并且该程序应将其结果发送到其标准输出。 - gpg.format
-
指定使用
--gpg-sign
签名时要使用的密钥格式。默认为 "openpgp"。其他可能的值为 "x509"、"ssh"。有关签名格式,请参阅 gitformat-signature[5],该格式根据所选的
gpg.format
而有所不同。 - gpg.<格式>.program
-
使用此选项可自定义用于您选择的签名格式的程序。(请参阅
gpg.program
和gpg.format
)gpg.program
仍然可以用作gpg.openpgp.program
的旧版同义词。gpg.x509.program
的默认值为 “gpgsm”,gpg.ssh.program
的默认值为 “ssh-keygen”。 - gpg.minTrustLevel
-
指定签名验证的最低信任级别。如果未设置此选项,则合并操作的签名验证需要至少具有
marginal
信任的密钥。执行签名验证的其他操作需要至少具有undefined
信任的密钥。设置此选项会覆盖所有操作所需的信任级别。支持的值,重要性递增排序-
undefined
-
never
-
marginal
-
fully
-
ultimate
-
- gpg.ssh.defaultKeyCommand
-
如果未设置 user.signingkey 并且请求了 ssh 签名,则将运行此命令。成功退出后,期望在其输出的第一行中有一个有效的以
key::
为前缀的 ssh 公钥。这允许脚本动态查找正确的公钥,当静态配置user.signingKey
不切实际时。例如,当密钥或 SSH 证书频繁轮换时,或者选择正确的密钥取决于 Git 未知的外部因素时。 - gpg.ssh.allowedSignersFile
-
包含您愿意信任的 ssh 公钥的文件。该文件由一个或多个主体行组成,后跟一个 ssh 公钥。例如:
user1@example.com,user2@example.com ssh-rsa AAAAX1...
有关详细信息,请参阅 ssh-keygen(1) 的 “ALLOWED SIGNERS”。该主体仅用于标识密钥,并且在验证签名时可用。SSH 没有像 gpg 那样的信任级别概念。为了能够区分有效签名和受信任签名,当公钥存在于 allowedSignersFile 中时,签名验证的信任级别设置为
fully
。否则,信任级别为undefined
,并且 git verify-commit/tag 将失败。可以将此文件设置为存储库外部的位置,并且每个开发人员维护他们自己的信任存储。中央存储库服务器可以从具有推送访问权限的 ssh 密钥自动生成此文件,以验证代码。在公司环境中,此文件可能从已经处理开发人员 ssh 密钥的自动化程序在全局位置生成。
只允许签名提交的存储库可以使用相对于工作树顶层的路径将文件存储在存储库本身中。这样,只有具有已有效密钥的提交者才能在密钥环中添加或更改密钥。
自 OpensSSH 8.8 起,此文件允许使用 valid-after & valid-before 选项指定密钥生存期。如果签名密钥在创建签名时有效,Git 将标记签名为有效。这允许用户更改签名密钥而不会使所有先前制作的签名无效。
使用带有 cert-authority 选项的 SSH CA 密钥(请参阅 ssh-keygen(1) 的 “CERTIFICATES”)也是有效的。
- gpg.ssh.revocationFile
-
SSH KRL 或已撤销公钥的列表(没有主体前缀)。有关详细信息,请参阅 ssh-keygen(1)。如果在此文件中找到公钥,则始终将其视为具有信任级别 “never”,并且签名将显示为无效。
- grep.lineNumber
-
如果设置为 true,则默认启用
-n
选项。 - grep.column
-
如果设置为 true,则默认启用
--column
选项。 - grep.patternType
-
设置默认的匹配行为。使用 basic、extended、fixed 或 perl 值将分别启用
--basic-regexp
、--extended-regexp
、--fixed-strings
或--perl-regexp
选项,而 default 值将使用grep.extendedRegexp
选项来选择 basic 和 extended 之间的一个。 - grep.extendedRegexp
-
如果设置为 true,则默认启用
--extended-regexp
选项。当grep.patternType
选项设置为 default 以外的值时,此选项将被忽略。 - grep.threads
-
要使用的 grep 工作线程数。如果未设置(或设置为 0),Git 将使用与可用逻辑内核数一样多的线程。
- grep.fullName
-
如果设置为 true,则默认启用
--full-name
选项。 - grep.fallbackToNoIndex
-
如果设置为 true,则在 git grep 在 git 仓库之外执行时,回退到
git grep --no-index
。默认为 false。 - gui.commitMsgWidth
-
定义 git-gui[1] 中提交消息窗口的宽度。默认为 "75"。
- gui.diffContext
-
指定 git-gui[1] 所做的 diff 调用中应使用多少上下文行。默认为 "5"。
- gui.displayUntracked
-
确定 git-gui[1] 是否在文件列表中显示未跟踪的文件。默认为 "true"。
- gui.encoding
-
指定用于在 git-gui[1] 和 gitk[1] 中显示文件内容的默认字符编码。可以通过设置相关文件的 *encoding* 属性来覆盖它(参见 gitattributes[5])。如果未设置此选项,则工具默认为本地编码。
- gui.matchTrackingBranch
-
确定使用 git-gui[1] 创建的新分支是否应默认跟踪具有匹配名称的远程分支。默认值:"false"。
- gui.newBranchTemplate
-
在创建使用 git-gui[1] 的新分支时,用作建议的名称。
- gui.pruneDuringFetch
-
如果 git-gui[1] 应在执行 fetch 时修剪远程跟踪分支,则为 "true"。默认值为 "false"。
- gui.trustmtime
-
确定 git-gui[1] 是否应信任文件修改时间戳。默认情况下,时间戳是不被信任的。
- gui.spellingDictionary
-
指定用于在 git-gui[1] 中拼写检查提交消息的字典。设置为 "none" 时,拼写检查将被关闭。
- gui.fastCopyBlame
-
如果为 true,则 *git gui blame* 使用
-C
而不是-C -C
进行原始位置检测。这使得在大型仓库上 blame 显著更快,但代价是较不彻底的复制检测。 - gui.copyBlameThreshold
-
指定在 *git gui blame* 原始位置检测中使用的阈值,以字母数字字符衡量。有关复制检测的更多信息,请参见 git-blame[1] 手册。
- gui.blamehistoryctx
-
指定当从 *git gui blame* 调用
Show History Context
菜单项时,在 gitk[1] 中为所选提交显示的以天为单位的历史上下文的半径。如果此变量设置为零,则显示整个历史记录。 - guitool.<name>.cmd
-
指定在调用 git-gui[1]
Tools
菜单的相应项时要执行的 shell 命令行。对于每个工具,此选项都是强制性的。该命令从工作目录的根目录执行,并在环境中接收工具的名称作为GIT_GUITOOL
,当前选择的文件的名称作为 *FILENAME*,以及当前分支的名称作为 *CUR_BRANCH*(如果 HEAD 是分离的,则 *CUR_BRANCH* 为空)。 - guitool.<name>.needsFile
-
仅当在 GUI 中选择了一个 diff 时才运行该工具。它保证 *FILENAME* 不为空。
- guitool.<name>.noConsole
-
静默运行该命令,而不创建窗口来显示其输出。
- guitool.<name>.noRescan
-
在该工具完成执行后,不要重新扫描工作目录以查找更改。
- guitool.<name>.confirm
-
在实际运行该工具之前显示一个确认对话框。
- guitool.<name>.argPrompt
-
从用户处请求一个字符串参数,并通过
ARGS
环境变量将其传递给该工具。由于请求参数意味着确认,因此如果启用此选项,*confirm* 选项将不起作用。如果该选项设置为 *true*、*yes* 或 *1*,则该对话框使用内置的通用提示;否则,将使用变量的精确值。 - guitool.<name>.revPrompt
-
从用户处请求一个有效的修订版本,并设置
REVISION
环境变量。在其他方面,此选项与 *argPrompt* 类似,并且可以一起使用。 - guitool.<name>.revUnmerged
-
仅在 *revPrompt* 子对话框中显示未合并的分支。这对于类似于 merge 或 rebase 的工具很有用,但不适用于 checkout 或 reset 之类的事情。
- guitool.<name>.title
-
指定用于提示对话框的标题。默认为工具名称。
- guitool.<name>.prompt
-
指定要在对话框顶部的常规提示字符串,在 *argPrompt* 和 *revPrompt* 的子部分之前显示。默认值包括实际命令。
- help.browser
-
指定将用于以 *web* 格式显示帮助的浏览器。参见 git-help[1]。
- help.format
-
覆盖 git-help[1] 使用的默认帮助格式。支持 *man*、*info*、*web* 和 *html* 值。*man* 是默认值。*web* 和 *html* 相同。
- help.autoCorrect
-
如果 git 检测到拼写错误并且可以准确地识别一个类似于错误的有效命令,git 将尝试建议正确的命令,甚至自动运行该建议。可能的配置值是
-
0, "false", "off", "no", "show": 显示建议的命令 (默认)。
-
1, "true", "on", "yes", "immediate": 立即运行建议的命令。
-
正数 > 1: 在指定的十分之一秒 (0.1 秒) 后运行建议的命令。
-
"never": 不要运行或显示任何建议的命令。
-
"prompt": 显示建议并提示确认以运行该命令。
-
- help.htmlPath
-
指定 HTML 文档所在的路径。支持文件系统路径和 URL。当以 *web* 格式显示帮助时,HTML 页面将以此路径为前缀。这默认为 Git 安装的文档路径。
- http.proxy
-
覆盖 HTTP 代理,通常使用 *http_proxy*、*https_proxy* 和 *all_proxy* 环境变量进行配置(参见
curl(1)
)。除了 curl 理解的语法之外,还可以指定一个带有用户名但没有密码的代理字符串,在这种情况下,git 将尝试以与其他凭据相同的方式获取密码。参见 gitcredentials[7] 了解更多信息。因此,语法为 *[protocol://][user[:password]@]proxyhost[:port][/path]*。这可以在每个远程的基础上被覆盖;参见 remote.<name>.proxy任何代理,无论如何配置,都必须是完全透明的,并且不得以任何方式修改、转换或缓冲请求或响应。已知非完全透明的代理会导致 Git 出现各种形式的故障。
- http.proxyAuthMethod
-
设置用于对 HTTP 代理进行身份验证的方法。这仅在配置的代理字符串包含用户名部分(即,形式为 *user@host* 或 *user@host:port*)时才生效。这可以在每个远程的基础上被覆盖;参见
remote.<name>.proxyAuthMethod
。两者都可以被GIT_HTTP_PROXY_AUTHMETHOD
环境变量覆盖。可能的值是-
anyauth
- 自动选择合适的身份验证方法。假定代理以 407 状态代码和一个或多个带有支持的身份验证方法的 Proxy-authenticate 标头来响应未经身份验证的请求。这是默认值。 -
basic
- HTTP 基本身份验证 -
digest
- HTTP 摘要身份验证;这可以防止密码以明文形式传输到代理 -
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
-
尝试在不寻求用户名或密码的情况下进行身份验证。这可以用于尝试 GSS-Negotiate 身份验证,而无需在 URL 中指定用户名,因为 libcurl 通常需要用户名才能进行身份验证。
- http.proactiveAuth
-
尝试在不首先进行未经身份验证的尝试并接收 401 响应的情况下进行身份验证。这可以用于确保所有请求都经过身份验证。如果
http.emptyAuth
设置为 true,则此值无效。如果使用的凭据助手指定了一种身份验证方案(即,通过
authtype
字段),则将使用该值;如果在没有方案的情况下提供了用户名和密码,则使用基本身份验证。该选项的值确定从助手请求的方案。可能的值是-
basic
- 从助手请求基本身份验证。 -
auto
- 允许助手选择合适的方案。 -
none
- 禁用主动身份验证。
请注意,在这种配置下应始终使用 TLS,否则如果选择了 Basic 身份验证,很容易意外暴露明文凭据。
-
- http.delegation
-
控制 GSSAPI 凭据委派。自 libcurl 7.21.7 版本起,默认禁用委派。设置此参数以告知服务器在用户凭据方面允许委派的内容。与 GSS/kerberos 一起使用。可能的值有:
-
none
- 不允许任何委派。 -
policy
- 仅当 Kerberos 服务票证中设置了 OK-AS-DELEGATE 标志时才委派,这取决于域策略。 -
always
- 无条件地允许服务器委派。
-
- http.extraHeader
-
与服务器通信时传递额外的 HTTP 标头。如果存在多个此类条目,则会将它们全部添加为额外标头。为了允许覆盖从系统配置继承的设置,空值会将额外标头重置为空列表。
- http.cookieFile
-
包含先前存储的 cookie 行的文件路径名,如果它们与服务器匹配,则应在 Git http 会话中使用。要从中读取 cookie 的文件格式应为纯 HTTP 标头或 Netscape/Mozilla cookie 文件格式(请参阅
curl(1)
)。将其设置为空字符串,以仅接受来自服务器的新 cookie,并在同一连接中的后续请求中将其发回。请注意,除非设置了 http.saveCookies,否则 http.cookieFile 指定的文件仅用作输入。 - http.saveCookies
-
如果设置,则将请求期间收到的 cookie 存储到 http.cookieFile 指定的文件中。如果 http.cookieFile 未设置或设置为空字符串,则无效。
- http.version
-
与服务器通信时使用指定的 HTTP 协议版本。如果您想强制使用默认值。可用和默认版本取决于 libcurl。目前,此选项的可能值为:
-
HTTP/2
-
HTTP/1.1
-
- http.curloptResolve
-
主机名解析信息,libcurl 在发送 HTTP 请求时将首先使用它。此信息应采用以下格式之一:
-
[+]HOST:PORT:ADDRESS[,ADDRESS]
-
-HOST:PORT
第一种格式将所有对给定
HOST:PORT
的请求重定向到提供的ADDRESS
。第二种格式清除该HOST:PORT
组合的所有先前配置值。为了允许轻松覆盖从系统配置继承的所有设置,空值会将所有解析信息重置为空列表。 -
- http.sslVersion
-
协商 SSL 连接时要使用的 SSL 版本,如果您想强制使用默认值。可用和默认版本取决于 libcurl 是针对 NSS 还是 OpenSSL 构建,以及所使用的加密库的特定配置。在内部,这将设置 *CURLOPT_SSL_VERSION* 选项;有关此选项格式以及支持的 ssl 版本的更多详细信息,请参阅 libcurl 文档。目前,此选项的可能值为:
-
sslv2
-
sslv3
-
tlsv1
-
tlsv1.0
-
tlsv1.1
-
tlsv1.2
-
tlsv1.3
可以被
GIT_SSL_VERSION
环境变量覆盖。要强制 git 使用 libcurl 的默认 ssl 版本并忽略任何显式的 http.sslversion 选项,请将GIT_SSL_VERSION
设置为空字符串。 -
- http.sslCipherList
-
协商 SSL 连接时要使用的 SSL 密码列表。可用密码取决于 libcurl 是针对 NSS 还是 OpenSSL 构建,以及所使用的加密库的特定配置。在内部,这将设置 *CURLOPT_SSL_CIPHER_LIST* 选项;有关此列表格式的更多详细信息,请参阅 libcurl 文档。
可以被
GIT_SSL_CIPHER_LIST
环境变量覆盖。要强制 git 使用 libcurl 的默认密码列表并忽略任何显式的 http.sslCipherList 选项,请将GIT_SSL_CIPHER_LIST
设置为空字符串。 - http.sslVerify
-
是否在通过 HTTPS 获取或推送时验证 SSL 证书。默认为 true。可以被
GIT_SSL_NO_VERIFY
环境变量覆盖。 - http.sslCert
-
包含通过 HTTPS 获取或推送时使用的 SSL 证书的文件。可以被
GIT_SSL_CERT
环境变量覆盖。 - http.sslKey
-
包含通过 HTTPS 获取或推送时使用的 SSL 私钥的文件。可以被
GIT_SSL_KEY
环境变量覆盖。 - http.sslCertPasswordProtected
-
为 SSL 证书启用 Git 的密码提示。否则,如果证书或私钥已加密,OpenSSL 可能会多次提示用户。可以被
GIT_SSL_CERT_PASSWORD_PROTECTED
环境变量覆盖。 - http.sslCAInfo
-
包含在通过 HTTPS 获取或推送时用于验证对等方的证书的文件。可以被
GIT_SSL_CAINFO
环境变量覆盖。 - http.sslCAPath
-
包含 CA 证书文件的路径,这些证书用于在通过 HTTPS 获取或推送时验证对等方。可以被
GIT_SSL_CAPATH
环境变量覆盖。 - http.sslBackend
-
要使用的 SSL 后端的名称(例如“openssl”或“schannel”)。如果 cURL 缺少在运行时选择 SSL 后端的支持,则忽略此选项。
- http.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 来避免在本地创建大型 pack 文件。默认为 1 MiB,这对于大多数请求来说已经足够了。
请注意,提高此限制仅对禁用分块传输编码有效,因此仅应在远程服务器或代理仅支持 HTTP/1.0 或不符合 HTTP 标准的情况下使用。通常,提高此值并不是解决大多数推送问题的有效方法,但可能会显着增加内存消耗,因为即使对于小型推送也会分配整个缓冲区。
- http.lowSpeedLimit, http.lowSpeedTime
-
如果 HTTP 传输速度(以字节/秒为单位)低于 *http.lowSpeedLimit* 超过 *http.lowSpeedTime* 秒,则传输将中止。可以被
GIT_HTTP_LOW_SPEED_LIMIT
和GIT_HTTP_LOW_SPEED_TIME
环境变量覆盖。 - http.noEPSV
-
一个布尔值,用于禁用 curl 使用 EPSV ftp 命令。这对于某些不支持 EPSV 模式的“不良”ftp 服务器很有用。可以被
GIT_CURL_FTP_NO_EPSV
环境变量覆盖。默认为 false(curl 将使用 EPSV)。 - http.userAgent
-
呈现给 HTTP 服务器的 HTTP USER_AGENT 字符串。默认值表示 Git 客户端的版本,例如 git/1.7.1。此选项允许您将此值覆盖为更常见的值,例如 Mozilla/4.0。例如,如果通过防火墙连接时,防火墙将 HTTP 连接限制为一组常见的 USER_AGENT 字符串(但不包括像 git/1.7.1 这样的字符串),则可能有必要这样做。可以被
GIT_HTTP_USER_AGENT
环境变量覆盖。 - http.followRedirects
-
Git 是否应跟随 HTTP 重定向。如果设置为
true
,Git 将透明地跟随它遇到的服务器发出的任何重定向。如果设置为false
,Git 将把所有重定向都视为错误。如果设置为initial
,Git 将仅跟随到远程仓库的初始请求的重定向,而不跟随后续的 HTTP 请求。由于 Git 使用重定向的 URL 作为后续请求的基础,因此通常已足够。默认值为initial
。 - http.<url>.*
-
上述任何 http.* 选项都可以选择性地应用于某些 URL。为了使配置键与 URL 匹配,配置键的每个元素都将按照以下顺序与 URL 的元素进行比较:
-
方案 (例如,
https://example.com/
中的https
)。配置键和 URL 的此字段必须完全匹配。 -
主机/域名 (例如,
https://example.com/
中的example.com
)。配置键和 URL 的此字段必须匹配。可以指定*
作为主机名的一部分,以匹配此级别的所有子域。例如,https://*.example.com/
将匹配https://foo.example.com/
,但不匹配https://foo.bar.example.com/
。 -
端口号 (例如,
http://example.com:8080/
中的8080
)。配置键和 URL 的此字段必须完全匹配。省略的端口号会自动转换为方案的正确默认值,然后再进行匹配。 -
路径 (例如,
https://example.com/repo.git
中的repo.git
)。配置键的路径字段必须与 URL 的路径字段完全匹配,或者作为以斜杠分隔的路径元素的前缀。这意味着路径为foo/
的配置键与 URL 路径foo/bar
匹配。前缀只能在斜杠 (/
) 边界上匹配。更长的匹配项优先 (因此,路径为foo/bar
的配置键比路径仅为foo/
的配置键更好地匹配 URL 路径foo/bar
)。 -
用户名 (例如,
https://user@example.com/repo.git
中的user
)。如果配置键具有用户名,则它必须与 URL 中的用户名完全匹配。如果配置键没有用户名,则该配置键将匹配具有任何用户名(包括无用户名)的 URL,但优先级低于具有用户名的配置键。
上面的列表按优先级降序排列;与配置键的路径匹配的 URL 优先于与其用户名匹配的 URL。例如,如果 URL 是
https://user@example.com/foo/bar
,则https://example.com/foo
的配置键匹配将优先于https://user@example.com
的配置键匹配。在尝试任何匹配之前,将对所有 URL 进行规范化(为了匹配目的,如果密码部分嵌入在 URL 中,则始终将其忽略),以便简单拼写不同的等效 URL 将正确匹配。环境变量设置始终覆盖任何匹配项。匹配的 URL 是直接提供给 Git 命令的 URL。这意味着由于重定向而访问的任何 URL 都不参与匹配。
-
- i18n.commitEncoding
-
提交消息存储时使用的字符编码;Git 本身并不关心,但此信息是必要的,例如,当从电子邮件导入提交时,或者在 gitk 图形历史浏览器中(以及将来可能在其他地方或在其他高级命令中)。请参阅例如 git-mailinfo[1]。默认为 *utf-8*。
- i18n.logOutputEncoding
-
运行 *git log* 及其相关命令时,提交消息转换成的字符编码。
- imap.folder
-
将邮件放入的文件夹,通常是“草稿”文件夹。例如:"INBOX.Drafts"、"INBOX/Drafts" 或 "[Gmail]/Drafts"。必需。
- imap.tunnel
-
用于建立到 IMAP 服务器的通道的命令,命令将通过该通道进行管道传输,而不是使用到服务器的直接网络连接。当未设置 imap.host 时,这是必需的。
- imap.host
-
标识服务器的 URL。对于非安全连接,请使用
imap://
前缀,对于安全连接,请使用imaps://
前缀。当设置 imap.tunnel 时,将忽略此设置,否则为必需。 - imap.user
-
登录到服务器时要使用的用户名。
- imap.pass
-
登录到服务器时要使用的密码。
- imap.port
-
要在服务器上连接的整数端口号。对于 imap:// 主机,默认为 143,对于 imaps:// 主机,默认为 993。当设置 imap.tunnel 时,将忽略此设置。
- imap.sslverify
-
一个布尔值,用于启用/禁用对 SSL/TLS 连接使用的服务器证书的验证。默认为
true
。当设置 imap.tunnel 时,将忽略此设置。 - imap.preformattedHTML
-
一个布尔值,用于启用/禁用发送补丁时使用 HTML 编码。HTML 编码的补丁将用 <pre> 括起来,并且内容类型为 text/html。具有讽刺意味的是,启用此选项会导致 Thunderbird 将补丁作为 plain/text, format=fixed 电子邮件发送。默认为
false
。 - imap.authMethod
-
指定与 IMAP 服务器进行身份验证的身份验证方法。如果 Git 构建时使用了 NO_CURL 选项,或者您的 curl 版本低于 7.34.0,或者您使用
--no-curl
选项运行 git-imap-send,则唯一支持的方法是 *CRAM-MD5*。如果未设置此选项,则 *git imap-send* 将使用基本的 IMAP 明文 LOGIN 命令。 - include.path
- includeIf.<condition>.path
-
用于包含其他配置文件的特殊变量。请参阅主要 git-config[1] 文档中的“CONFIGURATION FILE”部分,特别是“Includes”和“Conditional Includes”小节。
- index.recordEndOfIndexEntries
-
指定索引文件是否应包含“索引条目结束”部分。这可以减少多处理器计算机上的索引加载时间,但在使用 2.20 之前的 Git 版本读取索引时会产生消息“忽略 EOIE 扩展”。如果已显式启用 index.threads,则默认为 *true*,否则为 *false*。
- index.recordOffsetTable
-
指定索引文件是否应包含“索引条目偏移表”部分。这可以减少多处理器计算机上的索引加载时间,但在使用 2.20 之前的 Git 版本读取索引时会产生消息“忽略 IEOT 扩展”。如果已显式启用 index.threads,则默认为 *true*,否则为 *false*。
- index.sparse
-
启用后,使用稀疏目录条目写入索引。除非同时启用
core.sparseCheckout
和core.sparseCheckoutCone
,否则此设置无效。默认为 *false*。 - index.threads
-
指定加载索引时要产生的线程数。这是为了减少多处理器计算机上的索引加载时间。指定 0 或 *true* 将导致 Git 自动检测 CPU 数量并相应地设置线程数。指定 1 或 *false* 将禁用多线程。默认为 *true*。
- index.version
-
指定初始化新索引文件时应使用的版本。这不会影响现有仓库。如果启用了
feature.manyFiles
,则默认为 4。 - index.skipHash
-
启用后,不计算索引文件的尾随哈希。这会加速操作索引的 Git 命令,例如
git add
、git commit
或git status
。而是存储校验和,并写入一组值为零的尾随字节,表示已跳过计算。如果您启用
index.skipHash
,则低于 2.13.0 的 Git 客户端将拒绝解析索引,而低于 2.40.0 的 Git 客户端将在git fsck
期间报告错误。
-
init.templateDir
-
指定将从中复制模板的目录。(请参阅 git-init[1] 的“TEMPLATE DIRECTORY”部分。)
-
init.defaultBranch
-
允许覆盖默认分支名称,例如在初始化新仓库时。
-
init.defaultObjectFormat
-
允许覆盖新仓库的默认对象格式。请参阅 git-init[1] 中的
--object-format=
。命令行选项和GIT_DEFAULT_HASH
环境变量都优先于此配置。 -
init.defaultRefFormat
-
允许覆盖新仓库的默认引用存储格式。请参阅 git-init[1] 中的
--ref-format=
。命令行选项和GIT_DEFAULT_REF_FORMAT
环境变量都优先于此配置。 - instaweb.browser
-
指定将用于在 gitweb 中浏览您的工作仓库的程序。请参阅 git-instaweb[1]。
- instaweb.httpd
-
在您的工作仓库上启动 gitweb 的 HTTP 守护程序命令行。请参阅 git-instaweb[1]。
- instaweb.local
-
如果为 true,则 git-instaweb[1] 启动的 Web 服务器将绑定到本地 IP (127.0.0.1)。
- instaweb.modulePath
-
git-instaweb[1] 使用的默认模块路径,而不是 /usr/lib/apache2/modules。仅当 httpd 是 Apache 时使用。
- instaweb.port
-
将 gitweb httpd 绑定到的端口号。请参阅 git-instaweb[1]。
- interactive.singleKey
-
设置为 true 时,允许用户在交互式命令中提供单字母输入,只需按一个键(即,无需按 Enter 键)。目前,这用于 git-add[1]、git-checkout[1]、git-restore[1]、git-commit[1]、git-reset[1] 和 git-stash[1] 的
--patch
模式。 - interactive.diffFilter
-
当交互式命令(例如
git add --patch
)显示彩色差异时,git 将通过此配置变量定义的 shell 命令管道传输该差异。该命令可以进一步标记差异以供人类使用,前提是它保留与原始差异中的行的一对一对应关系。默认为禁用(不进行过滤)。 - log.abbrevCommit
-
如果为 true,则让 git-log[1]、git-show[1] 和 git-whatchanged[1] 假定使用
--abbrev-commit
。您可以使用--no-abbrev-commit
覆盖此选项。 - log.date
-
设置 *log* 命令的默认日期-时间模式。为 log.date 设置值类似于使用 *git log* 的
--date
选项。有关详细信息,请参阅 git-log[1]。如果格式设置为 "auto:foo" 并且使用了分页器,则日期格式将使用格式 "foo"。否则,将使用 "default"。
- log.decorate
-
打印由 log 命令显示的任何提交的 ref 名称。如果指定了 *short*,则不打印 ref 名称前缀 *refs/heads/*、*refs/tags/* 和 *refs/remotes/*。如果指定了 *full*,则将打印完整的 ref 名称(包括前缀)。如果指定了 *auto*,则如果输出到终端,则 ref 名称的显示方式如同给定了 *short* 一样,否则不显示 ref 名称。这与
git log
的--decorate
选项相同。 - log.initialDecorationSet
-
默认情况下,
git log
仅显示某些已知 ref 命名空间的修饰。如果指定了 *all*,则显示所有 refs 作为修饰。 - log.excludeDecoration
-
从日志修饰中排除指定的模式。这类似于
--decorate-refs-exclude
命令行选项,但配置选项可以被--decorate-refs
选项覆盖。 - log.diffMerges
-
设置当指定
--diff-merges=on
时使用的差异格式,有关详细信息,请参阅 git-log[1] 中的--diff-merges
。默认为separate
。 - log.follow
-
如果为
true
,则当给出单个 <path> 时,git log
的行为就像使用了--follow
选项一样。这具有与--follow
相同的限制,即它不能用于跟踪多个文件,并且在非线性历史记录中效果不佳。 - log.graphColors
-
一个颜色列表,以逗号分隔,可用于在
git log --graph
中绘制历史记录线。 - log.showRoot
-
如果为 true,则初始提交将显示为一个大型创建事件。这等效于针对空树的差异。像 git-log[1] 或 git-whatchanged[1] 这样的工具,通常会隐藏根提交,现在将显示它。默认为 true。
- log.showSignature
-
如果为 true,则让 git-log[1]、git-show[1] 和 git-whatchanged[1] 假定使用
--show-signature
。 - log.mailmap
-
如果为 true,则让 git-log[1]、git-show[1] 和 git-whatchanged[1] 假定使用
--use-mailmap
,否则假定使用--no-use-mailmap
。默认为 true。 - lsrefs.unborn
-
可以是 "advertise" (默认)、"allow" 或 "ignore"。 如果是 "advertise",服务器将响应客户端发送 "unborn" (如 gitprotocol-v2[5] 中所述),并且将在协议 v2 功能通告期间通告对此功能的支持。"allow" 与 "advertise" 相同,只不过服务器不会通告对此功能的支持;这对于无法原子更新的负载均衡服务器(例如)很有用,因为管理员可以配置 "allow",然后在延迟一段时间后配置 "advertise"。
- mailinfo.scissors
-
如果为 true,则使 git-mailinfo[1](以及因此 git-am[1])默认情况下像提供了 --scissors 选项一样运行。 激活后,此功能会从消息正文中删除剪刀线(即主要由 ">8"、"8<" 和 "-" 组成)之前的所有内容。
- mailmap.file
-
增强 mailmap 文件的位置。首先加载位于存储库根目录中的默认 mailmap,然后加载此变量指向的 mailmap 文件。 mailmap 文件的位置可能位于存储库子目录中,也可能位于存储库本身之外的某个位置。 请参阅 git-shortlog[1] 和 git-blame[1]。
- mailmap.blob
-
与
mailmap.file
类似,但将该值视为对存储库中 blob 的引用。如果同时给出了mailmap.file
和mailmap.blob
,则会解析两者,其中来自mailmap.file
的条目优先。在裸存储库中,这默认为HEAD:.mailmap
。在非裸存储库中,它默认为空。 - maintenance.auto
-
此布尔配置选项控制某些命令在完成其正常工作后是否运行
git maintenance run --auto
。默认为 true。 - maintenance.autoDetach
-
许多 Git 命令在将数据写入存储库后会触发自动维护。此布尔配置选项控制此自动维护应在前台发生,还是维护进程应分离并在后台继续运行。
如果未设置,则
gc.autoDetach
的值用作备用。如果两者都未设置,则默认为 true,这意味着维护进程将分离。 - maintenance.strategy
-
此字符串配置选项提供了一种方法来指定用于后台维护的几个推荐计划之一。这仅影响在
git maintenance run --schedule=X
命令期间运行哪些任务,前提是没有提供--task=<task>
参数。此外,如果设置了maintenance.<task>.schedule
配置值,则使用该值而不是maintenance.strategy
提供的值。可能的策略字符串是-
none
:此默认设置意味着在任何计划中都不会运行任何任务。 -
incremental
:此设置优化用于执行不删除任何数据的少量维护活动。这不会安排gc
任务,但会每小时运行prefetch
和commit-graph
任务,每天运行loose-objects
和incremental-repack
任务,每周运行pack-refs
任务。
-
- maintenance.<task>.enabled
-
此布尔配置选项控制当未指定
--task
选项时,是否运行名称为<task>
的维护任务到git maintenance run
。 如果存在--task
选项,则会忽略这些配置值。默认情况下,只有maintenance.gc.enabled
为 true。 - maintenance.<task>.schedule
-
此配置选项控制给定的
<task>
是否在git maintenance run --schedule=<frequency>
命令期间运行。该值必须是“hourly”、“daily”或“weekly”之一。 - maintenance.commit-graph.auto
-
此整数配置选项控制作为
git maintenance run --auto
的一部分运行commit-graph
任务的频率。如果为零,则commit-graph
任务将不使用--auto
选项运行。负值将强制任务每次都运行。否则,正值意味着当不在 commit-graph 文件中的可到达提交的数量至少为maintenance.commit-graph.auto
的值时,该命令应运行。默认值为 100。 - maintenance.loose-objects.auto
-
此整数配置选项控制作为
git maintenance run --auto
的一部分运行loose-objects
任务的频率。如果为零,则loose-objects
任务将不使用--auto
选项运行。负值将强制任务每次都运行。否则,正值意味着当松散对象的数量至少为maintenance.loose-objects.auto
的值时,该命令应运行。默认值为 100。 - maintenance.incremental-repack.auto
-
此整数配置选项控制作为
git maintenance run --auto
的一部分运行incremental-repack
任务的频率。如果为零,则incremental-repack
任务将不使用--auto
选项运行。负值将强制任务每次都运行。否则,正值意味着当不在 multi-pack-index 中的 pack-files 数量至少为maintenance.incremental-repack.auto
的值时,该命令应运行。默认值为 10。 - man.viewer
-
指定可以用于以 *man* 格式显示帮助的程序。请参阅 git-help[1]。
- man.<tool>.cmd
-
指定调用指定 man 查看器的命令。指定的命令在 shell 中进行评估,并将 man 页面作为参数传递。(请参阅 git-help[1]。)
- man.<tool>.path
-
覆盖可以用于以 *man* 格式显示帮助的给定工具的路径。请参阅 git-help[1]。
- merge.conflictStyle
-
指定在合并时,将冲突的块写入工作树文件的样式。默认值为“merge”,它显示一个
<<<<<<<
冲突标记,一方所做的更改,一个=======
标记,另一方所做的更改,然后是一个>>>>>>>
标记。另一种样式“diff3”添加了一个|||||||
标记以及=======
标记之前的原始文本。“merge”样式倾向于产生比 diff3 更小的冲突区域,这既是因为排除了原始文本,也是因为当两个侧面的行子集匹配时,它们只是从冲突区域中提取出来。 另一种替代样式 "zdiff3" 与 diff3 类似,但在冲突区域的开头或结尾附近出现时,会从冲突区域中删除双方的匹配行。 - merge.defaultToUpstream
-
如果在没有 commit 参数的情况下调用 merge,则通过使用存储在远程跟踪分支中的最新观察值,合并为当前分支配置的上游分支。将查阅
branch.<current branch>.merge
的值,该值命名了在由branch.<current branch>.remote
命名的远程分支中的分支,然后它们通过remote.<remote>.fetch
映射到其相应的远程跟踪分支,并且合并这些跟踪分支的顶端。默认为 true。 - merge.ff
-
默认情况下,当合并一个当前 commit 的后代 commit 时,Git 不会创建一个额外的合并 commit。相反,当前分支的顶端会进行快进。当设置为
false
时,此变量告诉 Git 在这种情况下创建一个额外的合并 commit(相当于从命令行给出--no-ff
选项)。当设置为only
时,仅允许此类快进合并(相当于从命令行给出--ff-only
选项)。 - merge.verifySignatures
-
如果为 true,则相当于 --verify-signatures 命令行选项。有关详细信息,请参阅 git-merge[1]。
- merge.branchdesc
-
除了分支名称之外,还使用与它们关联的分支描述文本填充日志消息。默认为 false。
- merge.log
-
除了分支名称之外,还使用最多指定数量的来自实际合并的 commit 的单行描述填充日志消息。默认为 false,true 是 20 的同义词。
- merge.suppressDest
-
通过将一个与集成分支名称匹配的 glob 添加到此多值配置变量,为合并到这些集成分支中计算的默认合并消息将从其标题中省略“into <branch name>”。
可以使用一个具有空值的元素来清除从先前的配置条目中累积的 glob 列表。当没有定义
merge.suppressDest
变量时,为了向后兼容,使用默认值master
。 - merge.renameLimit
-
在合并期间重命名检测的详尽部分中要考虑的文件数量。如果未指定,则默认为 diff.renameLimit 的值。如果未指定 merge.renameLimit 和 diff.renameLimit,则当前默认为 7000。如果禁用重命名检测,则此设置无效。
- merge.renames
-
Git 是否检测重命名。如果设置为“false”,则禁用重命名检测。如果设置为“true”,则启用基本重命名检测。默认为 diff.renames 的值。
- merge.directoryRenames
-
Git 是否检测目录重命名,从而影响在历史记录的一侧将新文件添加到目录,而该目录在历史记录的另一侧被重命名时,合并时发生的情况。如果 merge.directoryRenames 设置为“false”,则禁用目录重命名检测,这意味着这些新文件将留在旧目录中。如果设置为“true”,则启用目录重命名检测,这意味着这些新文件将移动到新目录中。如果设置为“conflict”,则将报告此类路径的冲突。如果 merge.renames 为 false,则忽略 merge.directoryRenames 并将其视为 false。默认为“conflict”。
- merge.renormalize
-
告诉 Git 存储库中文件的规范表示形式随着时间的推移而发生了变化(例如,较早的 commit 记录了具有 CRLF 行尾的文本文件,但最近的 commit 使用了 LF 行尾)。在此类存储库中,对于每个需要三向内容合并的文件,Git 可以在执行合并之前将 commit 中记录的数据转换为规范形式,以减少不必要的冲突。有关更多信息,请参阅 gitattributes[5] 中的“合并具有不同签入/签出属性的分支”部分。
- merge.stat
-
是否在合并结束时打印 ORIG_HEAD 和合并结果之间的 diffstat。默认为 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.<vimdiff variant>.layout
-
配置 vimdiff 的
<variant>
的拆分窗口布局,<variant>
是vimdiff
、nvimdiff
、gvimdiff
中的任何一个。使用--tool=<variant>
(或者如果没有--tool
,则merge.tool
配置为<variant>
)启动git mergetool
时,Git 将查询mergetool.<variant>.layout
以确定该工具的布局。如果variant-specific配置不可用,则使用vimdiff
作为后备。如果该配置也不可用,则将使用具有 4 个窗口的默认布局。要配置布局,请参阅 git-mergetool[1] 中的BACKEND SPECIFIC HINTS
部分。 - mergetool.hideResolved
-
在合并期间,Git 将自动解决尽可能多的冲突,并将包含冲突标记的 MERGED 文件写入到它无法解决的任何冲突周围;LOCAL 和 REMOTE 通常表示来自 Git 冲突解决之前的文件的版本。此标志导致覆盖 LOCAL 和 REMOTE,以便仅将未解决的冲突呈现给合并工具。可以通过
mergetool.<tool>.hideResolved
配置变量按工具配置。默认为false
。 - mergetool.keepBackup
-
执行合并后,可以将带有冲突标记的原始文件保存为带有
.orig
扩展名的文件。如果此变量设置为false
,则不会保留此文件。默认为true
(即保留备份文件)。 - mergetool.keepTemporaries
-
调用自定义合并工具时,Git 使用一组临时文件传递给该工具。如果该工具返回错误并且此变量设置为
true
,则将保留这些临时文件;否则,它们将在该工具退出后被删除。默认为false
。 - mergetool.writeToTemp
-
默认情况下,Git 将冲突文件的临时 BASE、LOCAL 和 REMOTE 版本写入工作区。如果设置为
true
,Git 将尝试使用临时目录来存储这些文件。默认为false
。 - mergetool.prompt
-
在每次调用合并解决程序之前提示。
- mergetool.guiDefault
-
设为
true
时,默认使用merge.guitool
(相当于指定--gui
参数),设为auto
时,则根据DISPLAY
环境变量的值选择merge.guitool
或merge.tool
。默认值为false
,此时必须显式提供--gui
参数才能使用merge.guitool
。 -
notes.mergeStrategy
-
解决 notes 冲突时,默认选择哪种合并策略。必须是
manual
、ours
、theirs
、union
或cat_sort_uniq
之一。默认为manual
。有关每种策略的更多信息,请参阅 git-notes[1] 的“NOTES MERGE STRATEGIES”部分。可以通过将
--strategy
选项传递给 git-notes[1] 来覆盖此设置。 -
notes.<name>.mergeStrategy
-
当将 notes 合并到
refs/notes/<name>
中时,选择哪种合并策略。这会覆盖更通用的notes.mergeStrategy
。有关可用策略的更多信息,请参阅 git-notes[1] 中的“NOTES MERGE STRATEGIES”部分。 -
notes.displayRef
-
除了由
core.notesRef
或GIT_NOTES_REF
设置的默认值之外,还要从哪个 ref(或 refs,如果是 glob 或多次指定)读取 notes,以便在使用git log
系列命令显示提交消息时使用。可以使用
GIT_NOTES_DISPLAY_REF
环境变量覆盖此设置,该变量必须是以冒号分隔的 refs 或 globs 列表。如果 ref 不存在,将发出警告,但如果 glob 不匹配任何 ref,则会被静默忽略。
可以通过 git-log[1] 系列命令的
--no-notes
选项或这些命令接受的--notes=<ref>
选项禁用此设置。core.notesRef
(可能被GIT_NOTES_REF
覆盖)的有效值也会隐式添加到要显示的 refs 列表中。 -
notes.rewrite.<command>
-
当使用 *<command>*(当前为
amend
或rebase
)重写提交时,如果此变量为false
,则 git 不会将 notes 从原始提交复制到重写后的提交。默认为true
。另请参阅下面的notes.rewriteRef
。可以使用
GIT_NOTES_REWRITE_REF
环境变量覆盖此设置,该变量必须是以冒号分隔的 refs 或 globs 列表。 -
notes.rewriteMode
-
在重写期间复制 notes 时(请参阅
notes.rewrite.<command>
选项),确定如果目标提交已经有 note 时该怎么做。必须是overwrite
、concatenate
、cat_sort_uniq
或ignore
之一。默认为concatenate
。可以使用
GIT_NOTES_REWRITE_MODE
环境变量覆盖此设置。 -
notes.rewriteRef
-
在重写期间复制 notes 时,指定应复制其 notes 的(完全限定的)ref。 可以是 glob,在这种情况下,将复制所有匹配 refs 中的 notes。 您也可以多次指定此配置。
没有默认值;您必须配置此变量才能启用 note 重写。将其设置为
refs/notes/commits
以启用默认提交 notes 的重写。可以使用
GIT_NOTES_REWRITE_REF
环境变量覆盖。有关其格式的进一步说明,请参阅上面的notes.rewrite.<command>
。 - pack.window
-
当命令行上没有给出窗口大小时,git-pack-objects[1] 使用的窗口大小。默认为 10。
- pack.depth
-
当命令行上没有给出最大深度时,git-pack-objects[1] 使用的最大 delta 深度。默认为 50。最大值为 4095。
- pack.windowMemory
-
当命令行上没有给出限制时,git-pack-objects[1] 中每个线程消耗的用于 pack 窗口内存的最大内存大小。该值可以用“k”、“m”或“g”作为后缀。如果未配置(或显式设置为 0),则没有限制。
- pack.compression
-
一个整数 -1..9,表示 pack 文件中对象的压缩级别。-1 是 zlib 默认值。 0 表示不压缩,1..9 是各种速度/大小的权衡,9 最慢。如果未设置,则默认为 core.compression。如果 core.compression 也未设置,则默认为 -1,即 zlib 默认值,它是“速度和压缩之间的默认折衷(当前相当于级别 6)”。
请注意,更改压缩级别不会自动重新压缩所有现有对象。您可以通过将 -F 选项传递给 git-repack[1] 来强制重新压缩。
- pack.allowPackReuse
-
当为 true 或 “single”,且启用了可达性位图时,pack-objects 将尝试原封不动地发送位图 packfile 的部分内容。当为 “multi”,且提供了多 pack 可达性位图时,pack-objects 将尝试发送 MIDX 中所有 pack 的部分内容。
如果只有单个 pack 位图可用,且
pack.allowPackReuse
设置为 “multi”,则仅重用位图 packfile 的部分内容。 这可以减少内存和 CPU 使用量来服务 fetch,但可能会导致发送稍大的 pack。默认为 true。 - pack.island
-
一个扩展的正则表达式,用于配置一组 delta islands。有关详细信息,请参阅 git-pack-objects[1] 中的 "DELTA ISLANDS"。
- pack.islandCore
-
指定一个 island 名称,该 island 的对象将首先被打包。这在某个 pack 的前面创建了一种伪 pack,因此来自指定 island 的对象有望更快地复制到应提供给请求这些对象的用户的任何 pack 中。实际上,这意味着指定的 island 应该很可能对应于 repo 中最常被克隆的内容。另请参阅 git-pack-objects[1] 中的 "DELTA ISLANDS"。
- pack.deltaCacheSize
-
在将 deltas 写入 pack 之前,用于在 git-pack-objects[1] 中缓存 deltas 的最大内存(以字节为单位)。 此缓存用于加速写入对象阶段,而无需在找到所有对象的最佳匹配后重新计算最终 delta 结果。 但是,在内存紧张的机器上重新打包大型存储库可能会受到严重影响,特别是如果此缓存将系统推入交换。 值为 0 表示没有限制。 最小大小 1 字节可用于实际禁用此缓存。 默认为 256 MiB。
- pack.deltaCacheLimit
-
缓存在 git-pack-objects[1] 中的 delta 的最大大小。 此缓存用于加速写入对象阶段,而无需在找到所有对象的最佳匹配后重新计算最终 delta 结果。 默认为 1000。最大值为 65535。
- pack.threads
-
指定在搜索最佳 delta 匹配时要生成的线程数。 这要求使用 pthreads 编译 git-pack-objects[1],否则将忽略此选项并发出警告。 这旨在减少多处理器机器上的打包时间。 但是,delta 搜索窗口所需的内存量会乘以线程数。 指定 0 将导致 Git 自动检测 CPU 数量并相应地设置线程数。
- pack.indexVersion
-
指定默认的 pack 索引版本。 有效值为 1,表示 1.5.2 之前的 Git 版本使用的旧版 pack 索引,以及 2,表示新的 pack 索引,该索引具有处理大于 4 GB 的 pack 以及适当保护免受损坏的 pack 重新打包的功能。 版本 2 是默认值。 请注意,每当相应的 pack 大于 2 GB 时,都会强制使用版本 2,并且会忽略此配置选项。
如果您有一个旧的 Git,它不理解版本 2 的
*.idx
文件,那么通过非原生协议(例如“http”)克隆或获取将从另一侧复制*.pack
文件和相应的*.idx
文件,可能会为您提供一个无法通过您的旧版本 Git 访问的存储库。 但是,如果*.pack
文件小于 2 GB,则可以使用 git-index-pack[1] 在 *.pack 文件上重新生成*.idx
文件。 - pack.packSizeLimit
-
pack 的最大大小。 此设置仅影响在重新打包时打包到文件,即 git:// 协议不受影响。 可以通过 git-repack[1] 的
--max-pack-size
选项覆盖它。 达到此限制会导致创建多个 pack 文件。请注意,此选项很少有用,并且可能会导致更大的总磁盘大小(因为 Git 不会在 pack 之间存储 delta),以及更差的运行时性能(在多个 pack 中查找对象比单个 pack 慢,并且像可达性位图这样的优化无法处理多个 pack)。
如果您需要使用较小的 pack 文件主动运行 Git(例如,因为您的文件系统不支持大文件),则此选项可能会有所帮助。 但是,如果您的目标是通过支持有限大小的介质(例如,无法存储整个存储库的可移动介质)传输 pack 文件,那么您最好创建一个大的 pack 文件并使用通用的多卷存档工具(例如,Unix
split
)拆分它。允许的最小大小限制为 1 MiB。 默认值为无限制。 支持 k、m 或 g 的常见单位后缀。
- pack.useBitmaps
-
如果为 true,则在打包到 stdout 时(例如,在 fetch 的服务器端期间),git 将使用 pack 位图(如果可用)。 默认为 true。 通常,您不需要关闭此选项,除非您正在调试 pack 位图。
- pack.useBitmapBoundaryTraversal
-
如果为 true,Git 将使用一种实验性算法来计算使用位图的可达性查询。 不再为所有取反的 tips 构建完整的位图,然后将它们 OR 在一起,而是将带有现有位图的取反的 tips 视为附加的(即,如果它们存在则将它们 OR 到结果中,否则忽略它们),并在边界处构建位图。
使用此算法时,由于没有打开属于某些 UNINTERESTING 提交的树,Git 可能会包含过多的对象。 这种不精确性与非位图遍历算法相匹配。
在许多情况下,与精确算法相比,这可以提供加速,尤其是在查询的取反侧位图覆盖率较差时。
- pack.useSparse
-
如果为 true,则当存在 --revs 选项时,git 默认使用 git pack-objects 中的 --sparse 选项。 此算法仅遍历引入新对象的路径中出现的树。 在计算 pack 以发送小更改时,这可以带来显着的性能优势。 但是,如果包含的提交包含某些类型的直接重命名,则可能会将额外的对象添加到 pack 文件中。 默认为
true
。 - pack.preferBitmapTips
-
在选择哪些提交会收到位图时,优先选择位于任何引用顶端的提交,该引用是此配置的任何值的后缀,而不是“选择窗口”中的任何其他提交。
请注意,将此配置设置为
refs/foo
并不意味着refs/foo/bar
和refs/foo/baz
顶端的提交一定会被选中。 这是因为选择用于位图的提交是在一系列可变长度的窗口中进行的。如果在窗口中看到任何引用顶端的提交,该引用是此配置的任何值的后缀,则立即优先于该窗口中的任何其他提交。
- pack.writeBitmaps(已弃用)
-
这是
repack.writeBitmaps
的已弃用同义词。 - pack.writeBitmapHashCache
-
如果为 true,则 git 将在位图索引(如果已写入)中包含一个“哈希缓存”部分。 此缓存可用于为 git 的 delta 启发法提供数据,从而可能在位图对象和非位图对象之间产生更好的 delta(例如,在提供较旧的位图包和自上次 gc 以来已推送的对象之间的 fetch 时)。 缺点是它每个对象占用 4 字节的磁盘空间。 默认为 true。
在写入多包可达性位图时,不会计算新的 namehash;相反,写入新位图时,存储在现有位图中的任何 namehash 都会被置换到其适当的位置。
- pack.writeBitmapLookupTable
-
如果为 true,则 Git 将在位图索引(如果已写入)中包含一个“查找表”部分。 此表用于尽可能延迟加载单个位图。 这对于具有相对较大的位图索引的存储库可能是有益的。 默认为 false。
- pack.readReverseIndex
-
如果为 true,则 git 将读取任何可能可用的 .rev 文件(请参阅:gitformat-pack[5])。 如果为 false,则反向索引将从头开始生成并存储在内存中。 默认为 true。
- pack.writeReverseIndex
-
如果为 true,则 git 将为它写入的每个新 packfile 编写相应的 .rev 文件(请参阅:gitformat-pack[5]),除了在 git-fast-import[1] 和批量签入机制中。 默认为 true。
- pager.<cmd>
-
如果该值是布尔值,则在写入 tty 时,打开或关闭特定 Git 子命令输出的分页。 否则,使用
pager.<cmd>
的值指定的 pager 打开子命令的分页。 如果在命令行上指定了--paginate
或--no-pager
,则它优先于此选项。 要禁用所有命令的分页,请将core.pager
或GIT_PAGER
设置为cat
。 - pretty.<name>
-
--pretty= 格式字符串的别名,如 git-log[1] 中所述。 此处定义的任何别名都可以像内置的 pretty 格式一样使用。 例如,运行
git config pretty.changelog "format:* %H %s"
将导致调用git log --pretty=changelog
等效于运行git log "--pretty=format:* %H %s"
。 请注意,与内置格式具有相同名称的别名将被静默忽略。 - promisor.quiet
-
如果设置为 "true",则在为部分克隆获取其他对象时,假定使用
--quiet
。 - promisor.advertise
-
如果设置为 "true",服务器将使用 "promisor-remote" 功能,请参阅 gitprotocol-v2[5],来广播它正在使用的 promisor 远程仓库(如果它使用某些 promisor 远程仓库)。 默认值为 "false",这意味着不广播 "promisor-remote" 功能。
- promisor.acceptFromServer
-
如果设置为 "all",客户端将接受服务器可能使用 "promisor-remote" 功能广播的所有 promisor 远程仓库。 如果设置为 "knownName",客户端将接受已在客户端上配置的、并且与客户端广播的 promisor 远程仓库具有相同名称的 promisor 远程仓库。 这不是很安全,但可以在公司设置中使用,在这种设置中,服务器和客户端被信任不会切换名称和 URL。 如果设置为 "knownUrl",客户端将接受在客户端上配置的、并且与服务器广播的名称和 URL 具有相同名称和相同 URL 的 promisor 远程仓库。 这比 "all" 或 "knownName" 更安全,因此如果可能,应使用此选项而不是这些选项。 默认值为 "none",这意味着将不接受服务器广播的任何 promisor 远程仓库。 通过接受 promisor 远程仓库,客户端同意服务器可能会从其对客户端的 "fetch" 和 "clone" 请求的响应中省略可以从此 promisor 远程仓库延迟获取的对象。 请参阅 gitprotocol-v2[5]。
- protocol.allow
-
如果设置,则为所有没有明确策略的协议(
protocol.<name>.allow
)提供用户定义的默认策略。 默认情况下,如果未设置,已知安全协议(http、https、git、ssh)的默认策略为always
,已知危险协议(ext)的默认策略为never
,所有其他协议(包括 file)的默认策略为user
。 支持的策略-
always
- 协议始终可以使用。 -
never
- 协议永远不能使用。 -
user
- 只有当GIT_PROTOCOL_FROM_USER
未设置或值为 1 时,协议才能使用。 当您希望用户直接使用协议,但不希望命令在没有用户输入的情况下执行 clone/fetch/push 命令(例如,递归子模块初始化)时,应使用此策略。
-
- protocol.<name>.allow
-
设置一个策略,供协议
<name>
与 clone/fetch/push 命令一起使用。 有关可用策略,请参阅上面的protocol.allow
。git 当前使用的协议名称为
-
file
: 任何基于本地文件的路径(包括file://
URL 或本地路径) -
git
: 通过直接 TCP 连接(或代理,如果已配置)的匿名 git 协议 -
ssh
: 通过 ssh 的 git(包括host:path
语法、ssh://
等)。 -
http
: 通过 http 的 git,包括 "smart http" 和 "dumb http"。 请注意,这不包括https
;如果要配置两者,则必须单独配置。 -
任何外部助手都按其协议命名(例如,使用
hg
允许git-remote-hg
助手)
-
- protocol.version
-
如果设置,客户端将尝试使用指定的协议版本与服务器通信。 如果服务器不支持该版本,则通信将回退到版本 0。 如果未设置,则默认值为
2
。 支持的版本-
0
- 原始线路协议。 -
1
- 原始线路协议,并在服务器的初始响应中添加了版本字符串。 -
2
- 线路协议版本 2,请参阅 gitprotocol-v2[5]。
-
- pull.ff
-
默认情况下,当合并作为当前提交的后代的提交时,Git 不会创建额外的合并提交。 相反,当前分支的顶端会进行快进。 当设置为
false
时,此变量告诉 Git 在这种情况下创建额外的合并提交(相当于从命令行给出--no-ff
选项)。 当设置为only
时,只允许此类快进合并(相当于从命令行给出--ff-only
选项)。 此设置在拉取时覆盖merge.ff
。 - pull.rebase
-
如果为 true,则将分支变基到获取的分支之上,而不是在运行 "git pull" 时从默认远程仓库合并默认分支。 有关在每个分支上设置此项的信息,请参阅 "branch.<name>.rebase"。
当
merges
(或仅 m)时,将--rebase-merges
选项传递给 git rebase,以便本地合并提交包含在 rebase 中(有关详细信息,请参阅 git-rebase[1])。当值为
interactive
(或仅 i)时,rebase 以交互模式运行。注意:这可能是一个危险的操作; 在您了解其含义之前,请勿 使用它(有关详细信息,请参阅 git-rebase[1])。
- pull.octopus
-
一次拉取多个分支时要使用的默认合并策略。
- pull.twohead
-
拉取单个分支时要使用的默认合并策略。
- push.autoSetupRemote
-
如果设置为 "true",则在当前分支不存在上游跟踪时,默认推送时假定使用
--set-upstream
;此选项对 push.default 选项 simple、upstream 和 current 生效。 如果默认情况下希望将新分支推送到默认远程仓库(如 push.default=current 的行为),并且还希望设置上游跟踪,则此选项非常有用。 最有可能从此选项中受益的工作流程是 simple 中心工作流程,其中所有分支都应在远程仓库上具有相同的名称。 - push.default
-
定义如果没有给出 refspec(无论是从命令行、配置还是其他地方),
git push
应该采取的操作。 不同的值非常适合特定的工作流程;例如,在纯粹的中心工作流程中(即,fetch 源等于推送目标),upstream
可能是您想要的。 可能的值包括-
nothing
- 不推送任何内容(出错),除非给出 refspec。 这主要是为那些希望通过始终明确来避免错误的人准备的。 -
current
- 推送当前分支以更新接收端具有相同名称的分支。 在中心和非中心工作流程中都有效。 -
upstream
- 将当前分支推送回其更改通常集成到当前分支的分支(称为@{upstream}
)。 只有在您推送到您通常从中拉取的同一个存储库时(即中心工作流程),此模式才有意义。 -
tracking
- 这是upstream
的已弃用同义词。 -
simple
- 推送当前分支,使其在远程仓库上具有相同的名称。如果您正在处理中心工作流程(推送到您从中拉取的同一个存储库,通常是
origin
),那么您需要配置一个具有相同名称的上游分支。自 Git 2.0 以来,此模式是默认设置,并且是最适合初学者的最安全选项。
-
matching
- 推送两端都具有相同名称的所有分支。 这会使您要推送到的存储库记住将要推送的分支集(例如,如果您始终推送 maint 和 master 并且没有其他分支,则您要推送到的存储库将具有这两个分支,并且您的本地 maint 和 master 将被推送到那里)。要有效地使用此模式,您必须确保在运行 git push 之前,您要推送的所有分支都已准备好被推送,因为此模式的全部意义在于允许您一次推送所有分支。 如果您通常只完成一个分支的工作并推送结果,而其他分支未完成,则此模式不适合您。 此外,此模式不适合推送到共享的中心存储库,因为其他人可能会在那里添加新分支,或者在您无法控制的情况下更新现有分支的顶端。
这曾经是默认设置,但自 Git 2.0 以来不是(
simple
是新的默认设置)。
-
- push.followTags
-
如果设置为 true,则默认启用
--follow-tags
选项。 您可以在推送时通过指定--no-follow-tags
来覆盖此配置。 - push.gpgSign
-
可以设置为布尔值或字符串 if-asked。 true 值会导致所有推送都经过 GPG 签名,就像将
--signed
传递给 git-push[1] 一样。 字符串 if-asked 会导致在服务器支持的情况下对推送进行签名,就像将--signed=if-asked
传递给 git push 一样。 false 值可能会覆盖来自优先级较低的配置文件的值。 显式命令行标志始终覆盖此配置选项。 - push.pushOption
-
如果没有从命令行给出
--push-option=<option>
参数,则git push
的行为就像是将此变量的每个 <value> 都作为--push-option=<value>
给出一样。这是一个多值变量,并且可以在更高优先级的配置文件(例如,存储库中的
.git/config
)中使用一个空值来清除从较低优先级的配置文件(例如,$HOME/.gitconfig
)继承的值。Example: /etc/gitconfig push.pushoption = a push.pushoption = b ~/.gitconfig push.pushoption = c repo/.git/config push.pushoption = push.pushoption = b This will result in only b (a and c are cleared).
- push.recurseSubmodules
-
可以是 "check"、"on-demand"、"only" 或 "no",其行为与 "push --recurse-submodules" 相同。如果未设置,则默认使用 *no*,除非设置了 *submodule.recurse* (在这种情况下,*true* 值表示 *on-demand*)。
- push.useForceIfIncludes
-
如果设置为 "true",则相当于在命令行中为 git-push[1] 指定
--force-if-includes
选项。在推送时添加--no-force-if-includes
会覆盖此配置设置。 - push.negotiate
-
如果设置为 "true",则尝试通过客户端和服务器尝试查找共同提交的协商轮次来减小发送的 packfile 的大小。如果为 "false",则 Git 将仅依靠服务器的 ref 公告来查找共同的提交。
- push.useBitmaps
-
如果设置为 "false",则禁用 "git push" 的位图使用,即使
pack.useBitmaps
为 "true",也不会阻止其他 git 操作使用位图。默认为 true。 - rebase.backend
-
用于 rebase 的默认后端。可能的选择是 *apply* 或 *merge*。将来,如果 merge 后端获得 apply 后端的所有剩余功能,则此设置可能不会使用。
- rebase.stat
-
是否显示自上次 rebase 以来 upstream 中发生的变化的 diffstat。默认为 False。
- rebase.autoSquash
-
如果设置为 true,则默认情况下为交互模式启用 git-rebase[1] 的
--autosquash
选项。可以使用--no-autosquash
选项覆盖此设置。 - rebase.autoStash
-
如果设置为 true,则在操作开始之前自动创建一个临时 stash 条目,并在操作结束后应用它。这意味着您可以在脏工作区上运行 rebase。但是,请谨慎使用:在成功 rebase 之后,最终的 stash 应用可能会导致非平凡的冲突。此选项可以被 git-rebase[1] 的
--no-autostash
和--autostash
选项覆盖。默认为 false。 - rebase.updateRefs
-
如果设置为 true,则默认启用
--update-refs
选项。 - rebase.missingCommitsCheck
-
如果设置为 "warn",则 git rebase -i 将在删除某些提交(例如,删除了某行)时打印警告,但是 rebase 仍将继续。如果设置为 "error",则它将打印先前的警告并停止 rebase,然后可以使用 *git rebase --edit-todo* 来纠正错误。如果设置为 "ignore",则不执行任何检查。要删除提交而不发出警告或错误,请在 todo 列表中使用
drop
命令。默认为 "ignore"。 - rebase.instructionFormat
-
一个格式字符串,如 git-log[1] 中指定的,用于交互式 rebase 期间的 todo 列表。该格式将自动将提交哈希前置于该格式。
- rebase.abbreviateCommands
-
如果设置为 true,则
git rebase
将在 todo 列表中使用缩写的命令名称,从而产生如下内容p deadbee The oneline of the commit p fa1afe1 The oneline of the next commit ...
代替
pick deadbee The oneline of the commit pick fa1afe1 The oneline of the next commit ...
默认为 false。
- rebase.rescheduleFailedExec
-
自动重新安排失败的
exec
命令。这仅在交互模式下(或提供了--exec
选项时)才有意义。这与指定--reschedule-failed-exec
选项相同。 - rebase.forkPoint
-
如果设置为 false,则默认设置
--no-fork-point
选项。 - rebase.rebaseMerges
-
是否以及如何默认设置
--rebase-merges
选项。可以是rebase-cousins
、no-rebase-cousins
或布尔值。设置为 true 或no-rebase-cousins
等同于--rebase-merges=no-rebase-cousins
,设置为rebase-cousins
等同于--rebase-merges=rebase-cousins
,设置为 false 等同于--no-rebase-merges
。在命令行上传递--rebase-merges
(无论是否带有参数)都将覆盖任何rebase.rebaseMerges
配置。 - rebase.maxLabelLength
-
从提交主题生成标签名称时,将名称截断为此长度。默认情况下,名称会被截断为略小于
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 的数据并更新 ref 之后运行 "git maintenance run --auto"。您可以通过将此变量设置为 false 来停止它。
- receive.certNonceSeed
-
通过将此变量设置为字符串,
git receive-pack
将接受git push --signed
并通过使用 HMAC 保护的“nonce”进行验证,并使用此字符串作为密钥。 - receive.certNonceSlop
-
当
git push --signed
发送一个带有 "nonce" 的 push 证书,该 "nonce" 是在相同存储库中提供服务的 receive-pack 在此期间发出的,将证书中找到的 "nonce" 导出到GIT_PUSH_CERT_NONCE
到 hooks(而不是 receive-pack 要求发送方包含的内容)。这可以更容易地在pre-receive
和post-receive
中编写检查。他们只需要检查GIT_PUSH_CERT_NONCE_STATUS
是否为OK
,而不是检查记录 nonce 过期时间的GIT_PUSH_CERT_NONCE_SLOP
环境变量来决定是否要接受证书。 - receive.fsckObjects
-
如果设置为 true,则 git-receive-pack 将检查所有接收到的对象。有关检查的内容,请参见
transfer.fsckObjects
。默认为 false。如果未设置,则使用transfer.fsckObjects
的值。 - receive.fsck.<msg-id>
-
类似于
fsck.<msg-id>
,但由 git-receive-pack[1] 而不是 git-fsck[1] 使用。 有关详细信息,请参见fsck.<msg-id>
文档。 - receive.fsck.skipList
-
类似于
fsck.skipList
,但由 git-receive-pack[1] 而不是 git-fsck[1] 使用。 有关详细信息,请参见fsck.skipList
文档。 - receive.keepAlive
-
从客户端接收到 pack 之后,
receive-pack
在处理 pack 时可能不会产生任何输出(如果指定了--quiet
),这会导致某些网络断开 TCP 连接。设置此选项后,如果receive-pack
在此阶段的receive.keepAlive
秒内未传输任何数据,它将发送一个简短的 keepalive 数据包。默认为 5 秒;设置为 0 可完全禁用 keepalive。 - receive.unpackLimit
-
如果推送中接收到的对象数低于此限制,则这些对象将被解包到松散对象文件中。但是,如果接收到的对象数等于或超过此限制,则在添加任何缺少的 delta 基础之后,接收到的 pack 将存储为 pack。存储来自推送的 pack 可以使推送操作完成得更快,尤其是在慢速文件系统上。如果未设置,则使用
transfer.unpackLimit
的值。 - receive.maxInputSize
-
如果传入的 pack 流的大小大于此限制,则 git-receive-pack 将出错,而不是接受 pack 文件。如果未设置或设置为 0,则大小不受限制。
- receive.denyDeletes
-
如果设置为 true,则 git-receive-pack 将拒绝删除 ref 的 ref 更新。使用此功能可以防止通过推送删除此类 ref。
- receive.denyDeleteCurrent
-
如果设置为 true,则 git-receive-pack 将拒绝删除非裸存储库的当前检出分支的 ref 更新。
- receive.denyCurrentBranch
-
如果设置为 true 或 "refuse",则 git-receive-pack 将拒绝更新非裸存储库的当前检出分支。 这样的推送存在潜在的危险,因为它使 HEAD 与索引和工作树不同步。 如果设置为 "warn",则将此类推送的警告打印到 stderr,但允许继续推送。 如果设置为 false 或 "ignore",则允许此类推送,而不显示任何消息。 默认为 "refuse"。
另一种选择是 "updateInstead",如果推送到当前分支,它将更新工作树。 此选项旨在同步工作目录,当一侧无法通过交互式 ssh 轻松访问时(例如,一个活动的网站,因此要求工作目录是干净的)。 在虚拟机中开发以测试和修复不同操作系统上的代码时,此模式也很方便。
默认情况下,如果工作树或索引与 HEAD 有任何差异,"updateInstead" 将拒绝推送,但是可以使用
push-to-checkout
钩子自定义此行为。 请参见 githooks[5]。 - receive.denyNonFastForwards
-
如果设置为 true,则 git-receive-pack 将拒绝不是快进的 ref 更新。 使用此功能可以防止通过推送进行此类更新,即使强制执行了该推送。 初始化共享存储库时,将设置此配置变量。
- receive.hideRefs
-
此变量与
transfer.hideRefs
相同,但仅适用于receive-pack
(因此会影响推送,但不影响提取)。 尝试通过git push
更新或删除隐藏的 ref 将被拒绝。 - receive.procReceiveRefs
-
这是一个多值变量,用于定义引用前缀以匹配
receive-pack
中的命令。匹配此前缀的命令将由外部钩子 "proc-receive" 执行,而不是内部的execute_commands
函数。 如果未定义此变量,则永远不会使用 "proc-receive" 钩子,所有命令都将由内部的execute_commands
函数执行。例如,如果此变量设置为 "refs/for",则推送到诸如 "refs/for/master" 之类的引用将不会创建或更新名为 "refs/for/master" 的引用,但可能会通过运行 "proc-receive" 钩子直接创建或更新 pull request。
可选的修饰符可以在值的开头提供,以过滤特定操作的命令:创建 (a),修改 (m),删除 (d)。 可以在修饰符中包含
!
来否定引用前缀条目。例如:git config --system --add receive.procReceiveRefs ad:refs/heads git config --system --add receive.procReceiveRefs !:refs/heads
- receive.updateServerInfo
-
如果设置为 true,git-receive-pack 将在从 git-push 接收数据并更新 refs 后运行 git-update-server-info。
- receive.shallowUpdate
-
如果设置为 true,当新的 refs 需要新的 shallow roots 时,可以更新 .git/shallow。 否则,这些 refs 将被拒绝。
- reftable.blockSize
-
reftable 后端写入块时使用的字节大小。 块大小由写入器确定,不必是 2 的幂。 块大小必须大于存储库中使用的最长引用名称或日志条目,因为引用不能跨越块。
建议使用对虚拟内存系统或文件系统友好的 2 的幂(例如 4kB 或 8kB)。 较大的尺寸 (64kB) 可以产生更好的压缩效果,但读者在访问期间可能会增加成本。
最大块大小为
16777215
字节 (15.99 MiB)。 默认值为4096
字节 (4kB)。 值为0
将使用默认值。 - reftable.restartInterval
-
创建重启点的时间间隔。 reftable 后端在文件创建时确定重启点。 每 16 个可能更适合较小的块大小(4k 或 8k),每 64 个更适合较大的块大小(64k)。
更频繁的重启点会降低前缀压缩,并增加重启表占用的空间,这两者都会增加文件大小。
不太频繁的重启点使前缀压缩更有效,从而减小整体文件大小,但在二进制搜索步骤之后,读者需要遍历更多记录,从而增加了惩罚。
每个块最多支持
65535
个重启点。默认值是每 16 条记录创建一个重启点。 值为
0
将使用默认值。 - reftable.indexObjects
-
reftable 后端是否应写入对象块。 对象块是对象 ID 到指向它们的引用的反向映射。
默认值为
true
。 - reftable.geometricFactor
-
每当 reftable 后端将新表附加到堆栈时,它都会执行自动压缩,以确保只有少数几个表。 后端通过确保表在每个表的大小方面形成一个几何序列来实现此目的。
默认情况下,几何序列使用 2 的因子,这意味着对于任何表,下一个最大的表必须至少是其两倍大。 支持的最大因子为 256。
- reftable.lockTimeout
-
每当 reftable 后端将新表附加到堆栈时,它必须先锁定中央 "tables.list" 文件,然后才能对其进行更新。 此配置控制进程在另一个进程已经获取锁的情况下,等待获取锁的时间。 值 0 表示根本不重试;-1 表示无限期尝试。 默认为 100(即,重试 100 毫秒)。
- remote.pushDefault
-
默认推送到的远程仓库。 覆盖所有分支的
branch.<name>.remote
,并被特定分支的branch.<name>.pushRemote
覆盖。 - remote.<name>.url
-
远程仓库的 URL。 请参阅 git-fetch[1] 或 git-push[1]。 配置的远程仓库可以有多个 URL;在这种情况下,第一个用于获取,所有 URL 都用于推送(假设没有定义
remote.<name>.pushurl
)。 将此键设置为空字符串会清除 URL 列表,允许您覆盖之前的配置。 - remote.<name>.pushurl
-
远程仓库的推送 URL。 请参阅 git-push[1]。 如果配置的远程仓库中存在
pushurl
选项,则在推送时使用它代替remote.<name>.url
。 配置的远程仓库可以有多个推送 URL;在这种情况下,推送会发送到所有 URL。 将此键设置为空字符串会清除 URL 列表,允许您覆盖之前的配置。 - remote.<name>.proxy
-
对于需要 curl (http, https 和 ftp) 的远程仓库,这是用于该远程仓库的代理 URL。 设置为空字符串可禁用该远程仓库的代理。
- remote.<name>.proxyAuthMethod
-
对于需要 curl(http、https 和 ftp)的远程仓库,这是用于对正在使用的代理进行身份验证的方法(可能在
remote.<name>.proxy
中设置)。 请参阅http.proxyAuthMethod
。 - remote.<name>.fetch
-
git-fetch[1] 的默认 "refspec" 集。 请参阅 git-fetch[1]。
- remote.<name>.push
-
git-push[1] 的默认 "refspec" 集。 请参阅 git-push[1]。
- remote.<name>.mirror
-
如果为 true,则推送到此远程仓库会自动表现为在命令行上给出了
--mirror
选项。 - remote.<name>.skipDefaultUpdate
-
已弃用的
remote.<name>.skipFetchAll
的同义词(如果在配置文件中都设置了不同的值,则将使用最后一次出现的值)。 - remote.<name>.skipFetchAll
-
如果为 true,则在使用 git-fetch[1]、git-remote[1] 的
update
子命令进行更新时将跳过此远程仓库,并且会被git maintenance
的预取任务忽略。 - remote.<name>.receivepack
-
推送时要在远程端执行的默认程序。 请参阅 git-push[1] 的 --receive-pack 选项。
- remote.<name>.uploadpack
-
获取时要在远程端执行的默认程序。 请参阅 git-fetch-pack[1] 的 --upload-pack 选项。
- remote.<name>.tagOpt
-
将此值设置为 --no-tags 会在从远程 <name> 获取时禁用自动标签跟踪。 将其设置为 --tags 将从远程 <name> 获取每个标签,即使它们无法从远程分支头部访问。 将这些标志直接传递给 git-fetch[1] 可以覆盖此设置。 请参阅 git-fetch[1] 的 --tags 和 --no-tags 选项。
- remote.<name>.vcs
-
将此项设置为 <vcs> 值将导致 Git 使用 git-remote-<vcs> 助手与远程仓库交互。
- remote.<name>.prune
-
设置为 true 时,默认情况下从此远程仓库获取也会删除远程仓库上不再存在的任何远程跟踪引用(就像在命令行上给出了
--prune
选项一样)。 覆盖fetch.prune
设置(如果有)。 - remote.<name>.pruneTags
-
设置为 true 时,如果通过
remote.<name>.prune
、fetch.prune
或--prune
通常激活了修剪,则默认情况下从此远程仓库获取也会删除远程仓库上不再存在的任何本地标签。 覆盖fetch.pruneTags
设置(如果有)。另请参阅
remote.<name>.prune
和 git-fetch[1] 的 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,则使
git repack
的行为就像传递了--pack-kept-objects
一样。 有关详细信息,请参阅 git-repack[1]。 通常默认为false
,但如果正在写入位图索引(通过--write-bitmap-index
或repack.writeBitmaps
),则默认为true
。 - repack.useDeltaIslands
-
如果设置为 true,则使
git repack
的行为就像传递了--delta-islands
一样。 默认为false
。 - repack.writeBitmaps
-
如果设为 true,当将所有对象打包到磁盘时(例如,当运行
git repack -a
时),git 会写入一个位图索引。此索引可以加快为克隆和获取创建的后续包的“计数对象”阶段,但会牺牲一些磁盘空间和花费额外的初始重新打包时间。如果创建了多个包文件,则此设置无效。默认情况下,在裸仓库上为 true,否则为 false。 - repack.updateServerInfo
-
如果设置为 false,git-repack[1] 将不会运行 git-update-server-info[1]。默认为 true。当 git-repack[1] 的
-n
选项为真时,可以覆盖此设置。 - repack.cruftWindow
- repack.cruftWindowMemory
- repack.cruftDepth
- repack.cruftThreads
-
生成 cruft 包时 git-pack-objects[1] 使用的参数,并且相应的参数未通过命令行给出。有关默认值和含义,请参见类似命名的
pack.*
配置变量。 - rerere.autoUpdate
-
如果设置为 true,
git-rerere
会在使用先前记录的解决方案干净地解决冲突后,使用结果内容更新索引。默认为 false。 - rerere.enabled
-
激活对已解决冲突的记录,以便在再次遇到相同的冲突块时可以自动解决。默认情况下,如果
$GIT_DIR
下存在rr-cache
目录,则启用 git-rerere[1],例如,如果以前在存储库中使用过 "rerere"。 - revert.reference
-
将此变量设置为 true 会使
git revert
的行为类似于给定了--reference
选项。 - safe.bareRepository
-
指定 Git 将使用的裸仓库。当前支持的值为:
- safe.directory
-
这些配置条目指定了 Git 跟踪的目录,即使它们的所有者不是当前用户,也被认为是安全的。 默认情况下,Git 甚至会拒绝解析由其他人拥有的存储库的 Git 配置,更不用说运行其挂钩了,并且此配置设置允许用户指定例外,例如,对于有意共享的存储库(请参阅 git-init[1] 中的
--shared
选项)。这是一个多值设置,即您可以通过
git config --add
添加多个目录。 要重置安全目录的列表(例如,要覆盖在系统配置中指定的任何此类目录),请添加一个具有空值的safe.directory
条目。此配置设置仅在受保护的配置中有效(请参见 SCOPES)。 这样可以防止不受信任的存储库篡改此值。
此设置的值已进行插值,即
~/<path>
扩展为相对于主目录的路径,而%(prefix)/<path>
扩展为相对于 Git(运行时)前缀的路径。要完全退出此安全检查,请将
safe.directory
设置为字符串*
。 这将允许将所有存储库都视为其目录已列在safe.directory
列表中。 如果safe.directory=*
在系统配置中设置,并且您想重新启用此保护,请先使用空值初始化列表,然后再列出您认为安全的存储库。 提供附加了/*
的目录将允许访问指定目录下的所有存储库。如前所述,默认情况下,Git 仅允许您访问自己拥有的存储库,即运行 Git 的用户。 但是,当 Git 在提供 sudo 的非 Windows 平台上以 *root* 身份运行时,git 会检查 sudo 创建的 SUDO_UID 环境变量,除了 *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.<identity>.*
-
下面找到的 sendemail.* 参数的特定于标识的版本,当通过命令行或
sendemail.identity
选择此标识时,优先于这些参数。 - sendemail.multiEdit
-
如果为 true(默认),则会生成单个编辑器实例来编辑您必须编辑的文件(当使用
--annotate
时为补丁,当使用--compose
时为摘要)。 如果为 false,则将一个接一个地编辑文件,每次生成一个新的编辑器。 - sendemail.confirm
-
设置发送前是否确认的默认值。 必须是 *always*、*never*、*cc*、*compose* 或 *auto* 之一。 有关这些值的含义,请参见 git-send-email[1] 文档中的
--confirm
。 - sendemail.mailmap
-
如果为 true,则使 git-send-email[1] 假定
--mailmap
,否则假定--no-mailmap
。 默认为 False。 - sendemail.mailmap.file
-
git-send-email[1] 特定的补充 mailmap 文件的位置。 默认 mailmap 和
mailmap.file
首先加载。 因此,此文件中的条目优先于默认 mailmap 位置中的条目。 参见 gitmailmap[5]。 - sendemail.mailmap.blob
-
与
sendemail.mailmap.file
类似,但将该值视为对存储库中 blob 的引用。sendemail.mailmap.file
中的条目优先于此处的条目。 参见 gitmailmap[5]。 - sendemail.aliasesFile
-
为避免键入长电子邮件地址,请将此指向一个或多个电子邮件别名文件。 您还必须提供
sendemail.aliasFileType
。 - sendemail.aliasFileType
-
sendemail.aliasesFile 中指定的文件格式。 必须是 mutt、mailrc、pine、elm、gnus 或 sendmail 之一。
每种格式的别名文件是什么样子可以在同名电子邮件程序的文档中找到。 与标准格式的差异和限制在下面进行了描述
- sendemail.annotate
- sendemail.bcc
- sendemail.cc
- sendemail.ccCmd
- sendemail.chainReplyTo
- sendemail.envelopeSender
- sendemail.from
- sendemail.headerCmd
- sendemail.signedOffByCc
- sendemail.smtpPass
- sendemail.suppressCc
- sendemail.suppressFrom
- sendemail.to
- sendemail.toCmd
- sendemail.smtpDomain
- sendemail.smtpServer
- sendemail.smtpServerPort
- sendemail.smtpServerOption
- sendemail.smtpUser
- sendemail.thread
- sendemail.transferEncoding
- sendemail.validate
- sendemail.xmailer
-
这些配置变量都为 git-send-email[1] 命令行选项提供默认值。 有关详细信息,请参见其文档。
- sendemail.signedOffCc (已弃用)
-
已弃用的
sendemail.signedOffByCc
别名。 - sendemail.smtpBatchSize
-
每次连接要发送的消息数量,超过此数量将会重新登录。如果值为0或未定义,则在一个连接中发送所有消息。另请参阅 git-send-email[1] 的
--batch-size
选项。 - sendemail.smtpReloginDelay
-
重新连接到 SMTP 服务器前等待的秒数。另请参阅 git-send-email[1] 的
--relogin-delay
选项。 - sendemail.forbidSendmailVariables
-
为了避免常见的错误配置,如果存在 "sendmail" 的任何配置选项,git-send-email[1] 将中止并显示警告。设置此变量以绕过此检查。
- sequence.editor
-
git rebase -i
用于编辑 rebase 指令文件的文本编辑器。该值应由 shell 在使用时解释。它可以被GIT_SEQUENCE_EDITOR
环境变量覆盖。如果未配置,则使用默认的提交消息编辑器。 - showBranch.default
-
git-show-branch[1] 的默认分支集合。请参阅 git-show-branch[1]。
- sparse.expectFilesOutsideOfPatterns
-
通常,使用稀疏检出时,与任何稀疏模式都不匹配的文件将在索引中标记 SKIP_WORKTREE 位,并且从工作目录中缺失。因此,Git 通常会检查具有 SKIP_WORKTREE 位的檔案是否实际存在于工作目录中,与预期相反。如果 Git 找到任何此类文件,它会通过清除相关的 SKIP_WORKTREE 位来将这些路径标记为存在。可以使用此选项告诉 Git,这种存在但被跳过的文件是预期的,并停止检查它们。
默认值为
false
,这允许 Git 自动从索引和工作目录中的文件列表不同步的状态中恢复。如果您的设置中存在一些外部因素可以解除 Git 维护工作目录文件存在与稀疏模式之间一致性的责任,请将其设置为
true
。例如,如果您有一个支持 Git 的虚拟文件系统,该系统具有强大的机制,可以根据访问模式保持工作目录和稀疏模式的最新状态。无论此设置如何,除非启用了稀疏检出,否则 Git 不会检查存在但被跳过的文件,因此除非
core.sparseCheckout
为true
,否则此配置选项不起作用。 - splitIndex.maxPercentChange
-
当使用拆分索引功能时,此选项指定拆分索引可以包含的条目百分比,与拆分索引和共享索引中的条目总数相比。该值应介于 0 到 100 之间。如果该值为 0,则总是写入一个新的共享索引;如果该值为 100,则永远不会写入新的共享索引。默认情况下,该值为 20,因此如果拆分索引中的条目数大于条目总数的 20%,则会写入一个新的共享索引。请参阅 git-update-index[1]。
-
当使用拆分索引功能时,自从此变量指定的时间以来未修改的共享索引文件将在创建新的共享索引文件时被删除。“now”值会立即过期所有条目,而“never”会完全禁止过期。默认值为“2.weeks.ago”。请注意,每次基于共享索引创建新的拆分索引文件或从中读取时,共享索引文件都被认为是已修改的(为了过期的目的)。请参阅 git-update-index[1]。
- ssh.variant
-
默认情况下,Git 根据配置的 SSH 命令的基本名称(使用环境变量
GIT_SSH
或GIT_SSH_COMMAND
或配置设置core.sshCommand
进行配置)来确定要使用的命令行参数。如果基本名称无法识别,Git 将尝试通过首先使用-G
(打印配置)选项调用配置的 SSH 命令来检测 OpenSSH 选项的支持,随后将使用 OpenSSH 选项(如果成功)或除了主机和远程命令之外没有选项(如果失败)。可以设置配置变量
ssh.variant
以覆盖此检测。有效值为ssh
(使用 OpenSSH 选项)、plink
、putty
、tortoiseplink
、simple
(除了主机和远程命令之外没有选项)。可以使用值auto
显式请求默认自动检测。任何其他值都被视为ssh
。也可以通过环境变量GIT_SSH_VARIANT
覆盖此设置。每个变体使用的当前命令行参数如下:
-
ssh
- [-p port] [-4] [-6] [-o option] [username@]host command -
simple
- [username@]host command -
plink
或putty
- [-P port] [-4] [-6] [username@]host command -
tortoiseplink
- [-P port] [-4] [-6] -batch [username@]host command
除了
simple
变体,随着 git 获得新功能,命令行参数很可能会更改。 -
- stash.showIncludeUntracked
-
如果设置为 true,则
git stash show
命令将显示 stash 条目的未跟踪文件。默认为 false。请参阅 git-stash[1] 中 _show_ 命令的描述。 - stash.showPatch
-
如果设置为 true,则不带选项的
git stash show
命令将以补丁形式显示 stash 条目。默认为 false。请参阅 git-stash[1] 中 _show_ 命令的描述。 - stash.showStat
-
如果设置为 true,则不带选项的
git stash show
命令将显示 stash 条目的 diffstat。默认为 true。请参阅 git-stash[1] 中 _show_ 命令的描述。 - status.relativePaths
-
默认情况下,git-status[1] 显示相对于当前目录的路径。将此变量设置为
false
会显示相对于存储库根目录的路径(这是 Git v1.5.4 之前的默认行为)。 - status.short
-
设置为 true 以默认在 git-status[1] 中启用 --short。选项 --no-short 优先于此变量。
- status.branch
-
设置为 true 以默认在 git-status[1] 中启用 --branch。选项 --no-branch 优先于此变量。
- status.aheadBehind
-
设置为 true 以默认在 git-status[1] 中为非瓷器格式启用
--ahead-behind
,设置为 false 以启用--no-ahead-behind
。默认为 true。 - status.displayCommentPrefix
-
如果设置为 true,git-status[1] 将在每行输出之前插入注释前缀(以
core.commentChar
开头,默认为#
)。这是 Git 1.8.4 及以前版本中 git-status[1] 的行为。默认为 false。 - status.renameLimit
-
在 git-status[1] 和 git-commit[1] 中执行重命名检测时要考虑的文件数。默认为 diff.renameLimit 的值。
- status.renames
-
Git 在 git-status[1] 和 git-commit[1] 中是否以及如何检测重命名。如果设置为 "false",则禁用重命名检测。如果设置为 "true",则启用基本重命名检测。如果设置为 "copies" 或 "copy",Git 也会检测副本。默认为 diff.renames 的值。
- status.showStash
-
如果设置为 true,git-status[1] 将显示当前已存储的条目数。默认为 false。
- status.showUntrackedFiles
-
默认情况下,git-status[1] 和 git-commit[1] 显示当前未被 Git 跟踪的文件。仅包含未跟踪文件的目录仅显示目录名。显示未跟踪文件意味着 Git 需要 lstat() 整个存储库中的所有文件,这在某些系统上可能会很慢。因此,此变量控制命令如何显示未跟踪文件。可能的值是:
-
no
- 不显示未跟踪文件。 -
normal
- 显示未跟踪文件和目录。 -
all
- 同时也显示未跟踪目录中的单个文件。
如果未指定此变量,则默认为 _normal_。布尔值
true
的所有常用拼写都视为normal
,false
视为no
。可以使用 git-status[1] 和 git-commit[1] 的 -u|--untracked-files 选项覆盖此变量。 -
- status.submoduleSummary
-
默认为 false。如果将其设置为非零数字或 true(与 -1 或无限数量相同),则将启用子模块摘要,并将显示已修改子模块的提交摘要(请参阅 git-submodule[1] 的 --summary-limit 选项)。请注意,当
diff.ignoreSubmodules
设置为 _all_ 时,或者仅对于那些submodule.<name>.ignore=all
的子模块,摘要输出命令将被禁止。该规则的唯一例外是状态和提交将显示暂存的子模块更改。要同时查看已忽略子模块的摘要,可以使用 --ignore-submodules=dirty 命令行选项或 _git submodule summary_ 命令,该命令显示类似的输出,但不遵守这些设置。 - submodule.<name>.url
-
子模块的 URL。此变量通过 _git submodule init_ 从 .gitmodules 文件复制到 git 配置。用户可以在通过 _git submodule update_ 获取子模块之前更改配置的 URL。如果未设置 submodule.<name>.active 且未设置 submodule.active,则此变量的存在将用作后备,以指示子模块是否对 git 命令感兴趣。有关详细信息,请参见 git-submodule[1] 和 gitmodules[5]。
- submodule.<name>.update
-
_git submodule update_ 更新子模块的方法,这是唯一受影响的命令,其他命令(例如 _git checkout --recurse-submodules_)不受影响。它的存在具有历史原因,当时 _git submodule_ 是唯一与子模块交互的命令;像
submodule.active
和pull.rebase
这样的设置更具体。它由git submodule init
从 gitmodules[5] 文件中填充。请参阅 git-submodule[1] 中 _update_ 命令的描述。 - submodule.<name>.branch
-
子模块的远程分支名称,由
git submodule update --remote
使用。设置此选项可覆盖在.gitmodules
文件中找到的值。有关详细信息,请参见 git-submodule[1] 和 gitmodules[5]。 - submodule.<name>.fetchRecurseSubmodules
-
此选项可用于控制对此子模块的递归获取。可以通过使用“git fetch”和“git pull”的命令行选项
--[no-]recurse-submodules
来覆盖它。此设置将覆盖 gitmodules[5] 文件中的设置。 - submodule.<name>.ignore
-
定义在什么情况下 “git status” 和 diff 系列命令会将子模块显示为已修改。当设置为 “all” 时,它永远不会被视为已修改(但当它被暂存时,它仍然会出现在 status 和 commit 的输出中),“dirty” 将忽略子模块工作树的所有更改,仅考虑子模块的 HEAD 和超级项目中记录的提交之间的差异。“untracked” 将额外地允许工作树中具有已修改的跟踪文件的子模块显示出来。使用 “none”(未设置此选项时的默认值)也会显示工作树中具有未跟踪文件的子模块为已更改。此设置会覆盖 .gitmodules 中为此子模块所做的任何设置,这两个设置都可以使用 “--ignore-submodules” 选项在命令行上覆盖。git submodule 命令不受此设置的影响。
- submodule.<name>.active
-
指示子模块是否对 git 命令感兴趣的布尔值。此配置选项优先于 submodule.active 配置选项。有关详细信息,请参阅 gitsubmodules[7]。
- submodule.active
-
一个重复字段,其中包含用于匹配子模块路径的路径规范,以确定子模块是否对 git 命令感兴趣。有关详细信息,请参阅 gitsubmodules[7]。
- submodule.recurse
-
一个布尔值,指示命令是否应默认启用
--recurse-submodules
选项。默认为 false。设置为 true 时,可以通过
--no-recurse-submodules
选项停用它。请注意,某些缺少此选项的 Git 命令可能会调用受submodule.recurse
影响的上述某些命令;例如,git remote update
将调用git fetch
,但没有--no-recurse-submodules
选项。对于这些命令,一种解决方法是使用git -c submodule.recurse=0
临时更改配置值。以下列表显示了接受
--recurse-submodules
的命令以及它们是否受此设置支持。-
checkout
、fetch
、grep
、pull
、push
、read-tree
、reset
、restore
和switch
始终受支持。 -
clone
和ls-files
不受支持。 -
仅当启用
submodule.propagateBranches
时,才支持branch
。
-
- submodule.propagateBranches
-
[实验性] 一个布尔值,在使用
--recurse-submodules
或submodule.recurse=true
时启用分支支持。启用此选项将允许某些命令接受--recurse-submodules
,并且某些已经接受--recurse-submodules
的命令现在将考虑分支。默认为 false。 - submodule.fetchJobs
-
指定同时获取/克隆多少个子模块。一个正整数允许最多并行获取该数量的子模块。值为 0 将给出一些合理的默认值。如果未设置,则默认为 1。
- submodule.alternateLocation
-
指定在克隆子模块时,子模块如何获取备用对象。可能的值为
no
、superproject
。默认情况下,假定为no
,这不会添加引用。当值设置为superproject
时,要克隆的子模块将计算其备用对象位置,该位置相对于超级项目的备用对象。 - submodule.alternateErrorStrategy
-
指定如何处理通过
submodule.alternateLocation
计算的子模块的备用对象错误。可能的值为ignore
、info
、die
。默认值为die
。请注意,如果设置为ignore
或info
,并且计算出的备用对象出现错误,则克隆将继续,就像未指定备用对象一样。 - tag.forceSignAnnotated
-
一个布尔值,用于指定是否应对创建的带注释的标签进行 GPG 签名。如果在命令行上指定了
--annotate
,则它优先于此选项。 - tag.sort
-
此变量控制 git-tag[1] 显示标签时的排序方式。如果没有提供 "--sort=<value>" 选项,则将使用此变量的值作为默认值。
- tag.gpgSign
-
一个布尔值,用于指定是否应对所有标签进行 GPG 签名。在自动化脚本中运行使用此选项会导致大量标签被签名。因此,使用代理来避免多次键入 gpg 密码短语是很方便的。请注意,此选项不会影响由 "-u <keyid>" 或 "--local-user=<keyid>" 选项启用的标签签名行为。
- tar.umask
-
此变量可用于限制 tar 归档条目的权限位。默认值为 0002,它关闭了世界写入位。特殊值 "user" 指示将使用归档用户的 umask。请参阅 umask(2) 和 git-archive[1]。
Trace2 配置设置仅从系统和全局配置文件中读取;存储库本地和工作树配置文件以及 -c
命令行参数不受尊重。
- trace2.normalTarget
-
此变量控制正常目标目标。它可以被
GIT_TRACE2
环境变量覆盖。下表显示了可能的值。 - trace2.perfTarget
-
此变量控制性能目标目标。它可以被
GIT_TRACE2_PERF
环境变量覆盖。下表显示了可能的值。 - trace2.eventTarget
-
此变量控制事件目标目标。它可以被
GIT_TRACE2_EVENT
环境变量覆盖。下表显示了可能的值。-
0
或false
- 禁用目标。 -
1
或true
- 写入STDERR
。 -
[2-9]
- 写入已打开的文件描述符。 -
<absolute-pathname>
- 以追加模式写入文件。如果目标已存在且是一个目录,则跟踪将写入给定目录下的文件(每个进程一个文件)。 -
af_unix:[<socket-type>:]<absolute-pathname>
- 写入 Unix 域套接字(在支持它们的平台上)。套接字类型可以是stream
或dgram
;如果省略,Git 将尝试两者。
-
- trace2.normalBrief
-
布尔值。如果为 true,则从正常输出中省略
time
、filename
和line
字段。可以被GIT_TRACE2_BRIEF
环境变量覆盖。默认为 false。 - trace2.perfBrief
-
布尔值。如果为 true,则从 PERF 输出中省略
time
、filename
和line
字段。可以被GIT_TRACE2_PERF_BRIEF
环境变量覆盖。默认为 false。 - trace2.eventBrief
-
布尔值。如果为 true,则从事件输出中省略
time
、filename
和line
字段。可以被GIT_TRACE2_EVENT_BRIEF
环境变量覆盖。默认为 false。 - trace2.eventNesting
-
整数。指定事件输出中嵌套区域的所需深度。将省略比此值更深的区域。可以被
GIT_TRACE2_EVENT_NESTING
环境变量覆盖。默认为 2。 - trace2.configParams
-
以逗号分隔的“重要”配置设置模式列表,应记录在 trace2 输出中。例如,
core.*,remote.*.url
将导致 trace2 输出包含列出每个已配置远程的事件。可以被GIT_TRACE2_CONFIG_PARAMS
环境变量覆盖。默认未设置。 - trace2.envVars
-
以逗号分隔的“重要”环境变量列表,应记录在 trace2 输出中。例如,
GIT_HTTP_USER_AGENT,GIT_CONFIG
将导致 trace2 输出包含列出 HTTP 用户代理的覆盖和 Git 配置文件的位置的事件(假设已设置任何一个)。可以被GIT_TRACE2_ENV_VARS
环境变量覆盖。默认未设置。 - trace2.destinationDebug
-
布尔值。如果为 true,当无法打开跟踪目标目标进行写入时,Git 将打印错误消息。默认情况下,这些错误将被抑制,并且会静默禁用跟踪。可以被
GIT_TRACE2_DST_DEBUG
环境变量覆盖。 - trace2.maxFiles
-
整数。当将跟踪文件写入目标目录时,如果这样做将超过这么多文件,则不要写入其他跟踪。相反,写入一个 sentinel 文件,该文件将阻止进一步跟踪到该目录。默认为 0,这会禁用此检查。
- trailer.separators
-
此选项告诉哪些字符被识别为尾部 (trailer) 分隔符。默认情况下,只有 : 被识别为尾部分隔符,但 = 始终在命令行上接受,以与其他 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> 的 trailer 时,将执行什么操作。
此选项的有效值为:
add
(默认值)和doNothing
。使用
add
,将添加一个新的 trailer。使用
doNothing
,将不执行任何操作。 - trailer.<keyAlias>.key
-
为 <key> 定义一个 <keyAlias>。 <keyAlias> 必须是 <key> 的一个前缀(大小写无关)。 例如,在
git config trailer.ack.key "Acked-by"
中,“Acked-by” 是 <key>,而 “ack” 是 <keyAlias>。 此配置允许在命令行中使用较短的--trailer "ack:..."
调用,使用 “ack” <keyAlias> 代替较长的--trailer "Acked-by:..."
。在 <key> 的末尾,可以出现一个分隔符,然后是一些空格字符。 默认情况下,唯一有效的分隔符是:,但可以使用
trailer.separators
配置变量来更改此分隔符。如果 key 中存在分隔符,则在添加 trailer 时,它将覆盖默认分隔符。
- trailer.<keyAlias>.where
-
此选项接受与 trailer.where 配置变量相同的值,并且它会覆盖该选项为具有指定 <keyAlias> 的 trailer 指定的值。
- trailer.<keyAlias>.ifexists
-
此选项接受与 trailer.ifexists 配置变量相同的值,并且它会覆盖该选项为具有指定 <keyAlias> 的 trailer 指定的值。
- trailer.<keyAlias>.ifmissing
-
此选项接受与 trailer.ifmissing 配置变量相同的值,并且它会覆盖该选项为具有指定 <keyAlias> 的 trailer 指定的值。
- trailer.<keyAlias>.command
-
已弃用,请改用 trailer.<keyAlias>.cmd。 此选项的行为与 trailer.<keyAlias>.cmd 相同,不同之处在于它不会将任何内容作为参数传递给指定的命令。 而是,子字符串 $ARG 的第一次出现将被 <value> 替换,该 <value> 将作为参数传递。
请注意,用户命令中的 $ARG 仅被替换一次,并且替换 $ARG 的原始方法是不安全的。
当同一个 <keyAlias> 同时给出 trailer.<keyAlias>.cmd 和 trailer.<keyAlias>.command 时,将使用 trailer.<keyAlias>.cmd,而忽略 trailer.<keyAlias>.command。
- trailer.<keyAlias>.cmd
-
此选项可用于指定一个 shell 命令,该命令将被调用一次以自动添加具有指定 <keyAlias> 的 trailer,然后每次指定 --trailer <keyAlias>=<value> 参数以修改此选项将生成的 trailer 的 <value> 时,都会再次调用该命令。
当首次调用指定的命令以添加具有指定 <keyAlias> 的 trailer 时,其行为就像在 "git interpret-trailers" 命令的开头添加了一个特殊的 --trailer <keyAlias>=<value> 参数,其中 <value> 被认为是命令的标准输出,并删除了任何前导和尾随的空格。
如果在命令行中也传递了一些 --trailer <keyAlias>=<value> 参数,则对于每个具有相同 <keyAlias> 的参数,该命令将再次调用一次。 并且这些参数的 <value> 部分(如果有)将作为其第一个参数传递给该命令。 这样,该命令可以生成一个从 --trailer <keyAlias>=<value> 参数中传递的 <value> 计算出的 <value>。
- transfer.credentialsInUrl
-
配置的 URL 可以包含明文凭据,形式为
<protocol>://<user>:<password>@<domain>/<path>
。 您可能希望警告或禁止使用此类配置(建议使用 git-credential[1])。 这将用于 git-clone[1], git-fetch[1], git-push[1],以及任何其他直接使用配置的 URL 的情况。请注意,目前这仅限于检测
remote.<name>.url
配置中的凭据; 它不会检测remote.<name>.pushurl
配置中的凭据。您可能想要启用此选项以防止意外的凭据泄露,例如因为
-
您运行 git 的操作系统或系统可能无法提供一种方式或允许您配置存储用户名和/或密码的配置文件的权限。
-
即使它提供了,将此类数据“静态”存储也可能以其他方式暴露您,例如备份过程可能会将数据复制到另一个系统。
-
git 程序会将完整的 URL 作为命令行上的参数传递给彼此,这意味着凭据将暴露给其他非特权用户,这些用户可以在允许他们查看其他用户的完整进程列表的系统上查看这些凭据。 在 linux 上,procfs(5) 中记录的 "hidepid" 设置允许配置此行为。
如果这些问题不适用于您,那么您可能无需担心由于在 git 的配置文件中存储敏感数据而导致的凭据暴露。 如果您确实想使用此选项,请将
transfer.credentialsInUrl
设置为以下值之一 -
allow
(默认):Git 将继续其活动,而不会发出警告。 -
warn
:当 Git 解析具有明文凭据的 URL 时,它会将警告消息写入stderr
。 -
die
:当 Git 解析具有明文凭据的 URL 时,它会将失败消息写入stderr
。
-
- transfer.fsckObjects
-
当未设置
fetch.fsckObjects
或receive.fsckObjects
时,将改用此变量的值。 默认为 false。设置后,如果存在格式错误的object或指向不存在的object的链接,则fetch或receive将中止。 此外,还会检查各种其他问题,包括旧版问题(请参阅
fsck.<msg-id>
)以及潜在的安全问题,例如.GIT
目录或恶意.gitmodules
文件的存在(有关详细信息,请参阅 v2.2.1 和 v2.17.1 的发行说明)。 未来版本中可能会添加其他完整性和安全检查。在接收端,失败的 fsckObjects 将使这些对象无法访问,请参阅 git-receive-pack[1] 中的“隔离环境”。 在获取端,格式错误的对象将改为留在存储库中,而不会被引用。
由于
fetch.fsckObjects
实现的非隔离特性,无法像receive.fsckObjects
一样依赖它来保持对象存储干净。由于对象在解包时会写入对象存储,因此可能存在恶意对象被引入的情况,即使 "fetch" 失败,但随后的 "fetch" 却成功了,因为只检查了新的传入对象,而不是已经写入对象存储的对象。 不应依赖这种行为差异。 将来,此类对象也可能会被隔离用于 "fetch"。
目前,偏执狂需要找到某种方法来模拟隔离环境,如果他们想要与 "push" 相同的保护。 例如,在内部镜像的情况下,分两步进行镜像,一步获取不受信任的对象,然后执行第二个 "push"(将使用隔离)到另一个内部 repo,并让内部客户端使用这个推送到的存储库,或者禁止内部fetch,并且只有在运行完整的 "fsck" 之后(并且在此期间没有发生新的fetch)才允许它们。
- transfer.hideRefs
-
字符串(s)
receive-pack
和upload-pack
使用它来决定从其初始广告中省略哪些引用。 使用多个定义来指定多个前缀字符串。 此变量的值中列出的层次结构下的引用将被排除,并且在响应git push
或git fetch
时会被隐藏。 有关此配置的程序特定版本,请参阅receive.hideRefs
和uploadpack.hideRefs
。您还可以在引用名称前面包含一个
!
来否定该条目,显式地公开它,即使之前的条目将其标记为隐藏。 如果您有多个 hideRefs 值,则后面的条目会覆盖前面的条目(并且更具体的配置文件中的条目会覆盖不太具体的配置文件中的条目)。如果正在使用命名空间,则在将每个引用与
transfer.hiderefs
模式进行匹配之前,会从每个引用中删除命名空间前缀。 要在删除之前匹配引用,请在引用名称前面添加一个^
。 如果您组合使用!
和^
,则必须首先指定!
。例如,如果在
transfer.hideRefs
中指定了refs/heads/master
并且当前命名空间是foo
,则从广告中省略refs/namespaces/foo/refs/heads/master
。 如果设置了uploadpack.allowRefInWant
,则upload-pack
将在协议 v2fetch
命令中将want-ref refs/heads/master
视为refs/namespaces/foo/refs/heads/master
不存在。 另一方面,receive-pack
仍会通告该引用指向的对象 id,而不提及它的名称(所谓的 ".have" 行)。即使您隐藏了引用,客户端仍然可以通过 gitnamespaces[7] 手册页的“安全性”部分中描述的技术来窃取目标对象; 最好将私有数据保存在单独的存储库中。
- transfer.unpackLimit
-
当未设置
fetch.unpackLimit
或receive.unpackLimit
时,将改用此变量的值。 默认值为 100。 - transfer.advertiseSID
-
布尔值。 如果为 true,则客户端和服务器进程将向其远程对应方通告其唯一的会话 ID。 默认为 false。
- transfer.bundleURI
-
如果为
true
,则本地git clone
命令将从远程服务器请求捆绑包信息(如果已通告),并在通过 Git 协议继续克隆之前下载捆绑包。 默认为false
。 - transfer.advertiseObjectInfo
-
如果为
true
,则服务器会通告object-info
功能。 默认为 false。 - uploadarchive.allowUnreachable
-
如果为 true,则允许客户端使用
git archive --remote
请求任何树,无论是否可以从引用提示访问。 有关更多详细信息,请参阅 git-upload-archive[1] 的“安全性”部分中的讨论。 默认为false
。 - uploadpack.hideRefs
-
此变量与
transfer.hideRefs
相同,但仅适用于upload-pack
(因此仅影响fetch,不影响push)。 尝试通过git fetch
获取隐藏的引用将会失败。 另请参阅uploadpack.allowTipSHA1InWant
。 - uploadpack.allowTipSHA1InWant
-
当
uploadpack.hideRefs
生效时,允许upload-pack
接受一个提取请求,该请求请求隐藏 ref 顶端的对象(默认情况下,此类请求会被拒绝)。另请参阅uploadpack.hideRefs
。即使此项设置为 false,客户端也可能通过 gitnamespaces[7] 手册页的“SECURITY”部分中描述的技术窃取对象;最好将私有数据保存在单独的仓库中。 - uploadpack.allowReachableSHA1InWant
-
允许
upload-pack
接受一个提取请求,该请求请求从任何 ref 顶端可访问的对象。但是,请注意,计算对象可达性在计算上非常昂贵。默认为false
。即使此项设置为 false,客户端也可能通过 gitnamespaces[7] 手册页的“SECURITY”部分中描述的技术窃取对象;最好将私有数据保存在单独的仓库中。 - uploadpack.allowAnySHA1InWant
-
允许
upload-pack
接受一个提取请求,该请求请求任何对象。它暗示了uploadpack.allowTipSHA1InWant
和uploadpack.allowReachableSHA1InWant
。如果设置为true
,它将启用两者;如果设置为false
,它将禁用两者。默认情况下未设置。 - uploadpack.keepAlive
-
当
upload-pack
启动pack-objects
时,在pack-objects
准备 pack 文件时,可能会有一段静默期。通常它会输出进度信息,但如果提取使用了--quiet
,pack-objects
将不会输出任何内容,直到 pack 数据开始。某些客户端和网络可能会认为服务器挂起并放弃。设置此选项会指示upload-pack
每隔uploadpack.keepAlive
秒发送一个空的 keepalive 数据包。将此选项设置为 0 将完全禁用 keepalive 数据包。默认值为 5 秒。 - uploadpack.packObjectsHook
-
如果设置了此选项,当
upload-pack
运行git pack-objects
为客户端创建一个 pack 文件时,它将改为运行此 shell 命令。pack-objects
命令及其 将要 运行的参数(包括开头的git pack-objects
)会附加到 shell 命令中。hook 的 stdin 和 stdout 被视为pack-objects
本身已运行。也就是说,upload-pack
将把预定用于pack-objects
的输入提供给 hook,并期望在 stdout 上找到已完成的 pack 文件。请注意,只有在受保护的配置中指定此配置变量时,它才会被尊重(请参阅 SCOPES)。这是一种安全措施,可以防止从不受信任的仓库中提取。
- uploadpack.allowFilter
-
如果设置了此选项,
upload-pack
将支持部分克隆和部分提取对象过滤。 - uploadpackfilter.allow
-
为未指定的对象过滤器提供默认值(请参阅下面的配置变量)。如果设置为
true
,这将启用所有将来添加的过滤器。默认为true
。 - uploadpackfilter.<filter>.allow
-
显式允许或禁止与
<filter>
对应的对象过滤器,其中<filter>
可以是:blob:none
、blob:limit
、object:type
、tree
、sparse:oid
或combine
。如果使用组合过滤器,则必须允许combine
和所有嵌套的过滤器类型。默认为uploadpackfilter.allow
。 - uploadpackfilter.tree.maxDepth
-
仅当
<n>
不大于uploadpackfilter.tree.maxDepth
的值时,才允许--filter=tree:<n>
。如果设置了此项,这也意味着uploadpackfilter.tree.allow=true
,除非此配置变量已设置。如果未设置,则无效。 - uploadpack.allowRefInWant
-
如果设置了此选项,
upload-pack
将支持协议版本 2fetch
命令的ref-in-want
功能。此功能旨在使负载均衡的服务器受益,由于复制延迟,这些服务器可能对其 refs 指向的 OID 具有不同的视图。 - url.<base>.insteadOf
-
任何以此值开头的 URL 都将被重写为以 <base> 开头。在某些站点提供大量仓库,并使用多种访问方法提供它们,并且某些用户需要使用不同的访问方法的情况下,此功能允许人们指定任何等效的 URL,并让 Git 自动将 URL 重写为特定用户最佳的替代方案,即使是该站点上从未见过的仓库。当多个 insteadOf 字符串与给定的 URL 匹配时,使用最长的匹配项。
请注意,任何协议限制都将应用于重写的 URL。如果重写更改 URL 以使用自定义协议或远程助手,您可能需要调整
protocol.*.allow
配置以允许该请求。特别是,您希望用于子模块的协议必须设置为always
,而不是默认的user
。请参阅上面protocol.allow
的描述。 - url.<base>.pushInsteadOf
-
任何以此值开头的 URL 都不会被推送;相反,它将被重写为以 <base> 开头,并且结果 URL 将被推送。在某些站点提供大量仓库,并使用多种访问方法提供它们,其中一些不允许推送的情况下,此功能允许人们指定一个只拉取的 URL,并让 Git 自动使用一个合适的 URL 进行推送,即使是该站点上从未见过的仓库。当多个 pushInsteadOf 字符串与给定的 URL 匹配时,使用最长的匹配项。如果远程仓库具有显式的 pushurl,Git 将忽略该远程仓库的此设置。
- user.name
- user.email
- author.name
- author.email
- committer.name
- committer.email
-
user.name
和user.email
变量确定提交对象的author
和committer
字段中的内容。如果您需要author
或committer
不同,则可以设置author.name
、author.email
、committer.name
或committer.email
变量。所有这些都可以被GIT_AUTHOR_NAME
、GIT_AUTHOR_EMAIL
、GIT_COMMITTER_NAME
、GIT_COMMITTER_EMAIL
和EMAIL
环境变量覆盖。请注意,这些变量的
name
形式通常指某种形式的个人姓名。有关这些设置的更多信息,请参阅 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 (deprecated)
-
versionsort.suffix
的已弃用别名。如果设置了versionsort.suffix
,则忽略此项。 - versionsort.suffix
-
即使在 git-tag[1] 中使用了版本排序,具有相同基本版本但不同后缀的标签名称仍然按字典顺序排序,导致例如预发布标签出现在主版本之后(例如,“1.0-rc1”在“1.0”之后)。可以指定此变量来确定具有不同后缀的标签的排序顺序。
通过在此变量中指定单个后缀,任何包含该后缀的标签名称都将出现在相应的主版本之前。例如,如果变量设置为“-rc”,则所有“1.0-rcX”标签都将出现在“1.0”之前。如果多次指定,每次一个后缀,则配置中后缀的顺序将决定具有这些后缀的标签名称的排序顺序。例如,如果“-pre”在配置中出现在“-rc”之前,则所有“1.0-preX”标签都将列在任何“1.0-rcX”标签之前。可以通过在这些其他后缀中指定空后缀来确定主版本标签相对于具有各种后缀的标签的位置。例如,如果后缀“-rc”、“”、“-ck”和“-bfs”以这种顺序出现在配置中,则首先列出所有“v4.8-rcX”标签,然后是“v4.8”,然后是“v4.8-ckX”,最后是“v4.8-bfsX”。
如果多个后缀与同一个标签名称匹配,则该标签名称将根据标签名称中最早位置开始的后缀进行排序。如果有多个不同的匹配后缀在该最早位置开始,则该标签名称将根据这些后缀中最长的后缀进行排序。如果不同的后缀位于多个配置文件中,则它们之间的排序顺序未定义。
- web.browser
-
指定一些命令可能使用的网络浏览器。目前只有 git-instaweb[1] 和 git-help[1] 可能会使用它。
- worktree.guessRemote
-
如果没有指定分支,并且没有使用
-b
、-B
或--detach
,那么git worktree add
默认会从 HEAD 创建一个新分支。如果worktree.guessRemote
设置为 true,则worktree add
尝试查找一个远程跟踪分支,其名称与新分支名称唯一匹配。如果存在这样的分支,则检出该分支并将其设置为新分支的“上游”。 如果找不到这样的匹配项,则回退到从当前 HEAD 创建一个新分支。 - worktree.useRelativePaths
-
使用相对路径(当“true”时)或绝对路径(当“false”时)链接工作区。这对于存储库和工作区可能在不同位置或环境之间移动的设置特别有用。默认为“false”。
请注意,将
worktree.useRelativePaths
设置为“true”意味着启用extension.relativeWorktrees
配置(请参阅 git-config[1]),因此使其与旧版本的 Git 不兼容。
BUG
当使用已弃用的 [section.subsection]
语法时,如果子部分至少包含一个大写字符,更改一个值将导致添加一个多行键,而不是更改。例如,当配置看起来像
[section.subsection] key = value1
并且运行 git config section.Subsection.key value2
将导致
[section.subsection] key = value1 key = value2
GIT
属于 git[1] 套件的一部分