config
TIP
在使用git config
时,您可能会遇到一些常见的问题和解决方案。一个常见的问题是设置了不正确的配置值,这可能会在使用git时导致错误。要解决此问题,可以使用git config --unset
命令删除不正确的配置值。另一个常见问题是需要设置多个配置值。为此,可以使用git config --add
命令将新值添加到现有配置中。最后,您可能需要更改特定远程存储库的配置值。为此,可以使用git config --remote
命令指定要修改的远程存储库。
获取和设置版本库或全局选项
语法
- git config
实例
查看[当前仓库|global|系统]config
- git config [--local|--global|--system] --list
查看所有的配置以及它们所在的文件
- git config --list --show-origin
编辑配置文件
- git config -e [--global]
设置提交代码时的用户信息
- git config [--global] user.name "[name]"
- git config [--global] user.email "[email address]"
使用VS Code
的文本编辑器
- git config --global core.editor "code --wait"
使用vimdiff
作为比较工具
- git config --global core.editor "code --wait"
打开所有的默认终端着色
- git config --global color.ui true
删除配置项section.key
- git config [--local|--global|--system] --unset section.key
获取所有可用配置变量的列表
- git help --config
选项
- -l,--list
-
列出在配置文件中设置的所有变量,以及它们的值。
- --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
读取,而不从所有可用文件读取。 - --unset
-
从配置文件中删除与密钥匹配的行。
- --replace-all
-
默认行为是最多替换一行。这将替换与键(以及可选的
value-pattern
)匹配的所有行。 - --add
-
在选项中添加新行,而不更改任何现有值。这与在
--replace-all
中提供^$
作为value-pattern
相同。 - --get
-
获取一个给定键的值(可选择通过与该值匹配的regex进行过滤),如果没有找到键,则返回错误代码1,如果找到多个键,则返回最后一个值。如果没有找到键,返回错误代码1,如果找到多个键值,返回最后一个值。
- --get-all
-
和get一样,但是返回一个多值键的所有值。
- --get-regexp
-
与
--get-all
类似,但将名称解释为正则表达式,并写出键名。正则表达式匹配目前是区分大小写的,并且是针对规范化的键的版本进行的,其中章节和变量名称是小写的,但分节名称不是。 - --get-urlmatch <名称> <URL>
-
当给定一个由两部分组成的名称
section.key
时,返回section.<URL>.key
的值,其<URL>
部分与给定的 URL 最匹配(如果不存在这样的键,则使用 section.key 的值作为后备)。当只给出部分作为名称时,对部分中的所有键都这样做并列出它们。如果未找到值,则返回错误代码 1。 - --worktree
-
与
--local
类似,除了$GIT_DIR/config.worktree --local extensions.worktreeConfig
被启用则被读取或写入。如果不是,则与--local
相同。请注意,对于主工作树,$GIT_DIR
等于$GIT_COMMON_DIR
,但对于其他工作树,其格式$GIT_DIR/worktrees/<id>/
。 - -f <config-file>,--file <config-file>
-
对于写入选项:写入指定文件而不是存储库
.git/config
。 -
对于读取选项:只从指定的文件而不是从所有可用的文件中读取。
- --blob <blob>
-
与
--file
相似,但是使用给定的blob而不是文件 - --remove-section
-
从配置文件中删除给定的部分。
- --rename-section
-
将给定的部分重新命名为一个新的名称。
- --unset-all
-
删除配置文件中所有与密钥匹配的行。
- --fixed-value
-
当与使用的
value-pattern
参数,治疗value-pattern
为一精确字符串而不是正则表达式。这会将匹配的名称/值对限制为仅匹配值与value-pattern
完全相等的名称/值对。 - --type <type>
-
确保任何输入或输出在给定的类型约束下都是有效的,并将以
<type>
的规范形式规范输出值。 -
有效的
<type>
包括: -
bool
:将值规范化为 ‘true’ 或 ‘false’。
-
int
:将值规范化为简单的十进制数字。输入k
,m
或g
的可选后缀将使该值在输入时乘以1024、1048576或1073741824。
-
bool-or-int
:如上所述,根据bool
或int
规范化。
-
path
:通过增加。规范化的领先~
到价值$HOME
和~user
的主目录为指定的用户。该说明符在设置值时无效(但是您可以从命令行使用git config section.variable ~/
让外壳程序进行扩展。)
-
expiry-date
:通过将固定或相对日期字符串转换为时间戳来规范化。设置值时,该说明符无效。
-
color
:获取值时,可通过转换为ANSI颜色转义序列进行规范化。设置值时,将执行完整性检查以确保给定值可以规范化为ANSI颜色,但按原样编写。
- --bool,--int,--bool-or-int,--path,--expiry-date
-
选择类型说明符的历史选项。请改用
--type
(请参见上文)。 - --no-type
-
取消设置先前设置的类型说明符(如果先前已设置)。此选项要求
git config
不规范检索到的变量。没有--type=<type>
或--<type>
no--no-type
无效。 - -z,--null
-
对于所有输出值和/或键的选项,总是以空字符(而不是换行)结束值。使用换行符作为键和值之间的分隔符。这样可以安全地解析输出,而不会被包含换行符的值所混淆。
- --name-only
-
仅输出
--list
或--get-regexp
的配置变量的名称。 - --show-origin
-
在所有被查询的配置选项的输出中增加起源类型(文件、标准输入、blob、命令行)和实际的起源(配置文件路径、ref或blob id(如果适用))。
- --show-scope
-
与
--show-origin
类似,它使用该值的范围(工作树、本地、全局、系统、命令)扩充所有查询配置选项的输出。 - --get-colorbool <名称> [<stdout-is-tty>]
-
找到
<name>
的颜色设置(例如color.diff
)并输出“true”或“false”。<stdout-is-tty>
应该是“true”或“false”,并在配置显示“auto”时考虑在内。如果<stdout-is-tty>
缺失,则检查命令本身的标准输出,如果要使用颜色则以状态 0 退出,否则以状态 1 退出。name
的颜色设置未定义时,该命令使用color.ui
作为后备。 - --get-color <名称> [<默认值>]
-
找到为
name
配置的颜色(例如color.diff.new
),并将其作为ANSI颜色转义序列输出到标准输出。如果没有为name
配置颜色,则使用可选的default
参数。 -
--type=color [--default=<default>]
优于--get-color
- -e,--edit
-
打开编辑器来修改指定的配置文件;无论是
--system
,--global
,或储存库(默认值)。 - --[no-]includes
-
查找值时,请遵守配置文件中的
include.*
指令。 - --default <value>
-
使用
--get
时,未找到请求的变量,其行为就像<value>
是分配给该变量的值一样。