如何显示我的全局Git配置?

1641

我希望显示所有配置的Git部分。

我只找到了git config --get core.editor,我想要输出全局配置的所有内容,而不仅仅是配置的默认编辑器。


3
查看.gitconfig有什么问题? - Rook
2
请注意,你很快就能(在2015年第三季度/第四季度)通过 git 2.6 的选项 --name-only 列出配置键,而不包括它们的值。请见下面的我的回答 - VonC
78
你可以通过输入 $ git config --list 命令来检查你的 Git 配置设置。更多信息请参考 Checking-Your-Settings - TarranJones
19
这里更深入地解释了,应该使用git config --global --list - prosti
15个回答

2521

你可以使用:

git config --list

或者查看你的~/.gitconfig文件。本地配置将在你的仓库的.git/config文件中。

使用:

git config --list --show-origin

查看该设置定义的位置(全局,用户,仓库等...)


36
谢谢,我为你们两个点赞了。我想知道 git config --list 命令,因为我可以查看一个仓库的有效配置,并且我可以使用相应的参数(--global--local--system)区分本地、全局和系统配置。一旦我能够接受答案,我就会尽快接受它,因为你比我稍微快了几秒钟 :) - wullxz
2
小心,git配置有很多潜在的来源。仅查看文件只能得到其中的一部分。@linquize的答案实际上是正确的。 - vonbrand
2
@vonbrand:--list 相当于 -l。 - Cameron Skinner
14
当你成为一个高级用户并且经常使用某个功能时,缩写(如“-l”)会变得很方便,因为它们能让你少打字符。我发现更容易找到并记住长的选项“--list”。对于不太明显的缩写,我经常需要查看它们代表什么,所以我更喜欢使用长名称。如果配合命令自动完成,使用长名称甚至更加容易,因为你不需要打出所有字符,但仍然可以看到整个选项名称。 - Krzysztof Jabłoński
2
如果 git config --list 没有输出任何内容怎么办? - Matej J
显示剩余4条评论

291
最短的。
git config -l

显示来自system、global和local的所有继承值


17
这与"git config --list"有何不同,还是只是一个更短的写法? - Magnilex
12
@Magnilex 这只是一种更简洁的写法。 - LemenDrop
4
配置文件可能并不总是显示所有继承的配置,但git config -l会显示所有内容。这拯救了我,因为Windows版的Git在安装时会设置autocrlf,而我找不到它在任何配置文件中的设置。 - geneorama
是的,还有C:\ ProgramData \ Git \ config文件 - 我猜这是全局或系统git配置文件。 - Alex

249
如何编辑全局 Git 配置文件?
简短回答:git config --edit --global Git 配置分为三个级别,每个级别会覆盖前一个级别的值:
1. 系统级别(应用于系统上的每个用户及其所有仓库) - 查看: git config --list --system (可能需要sudo权限) - 设置: git config --system color.ui true - 编辑系统配置文件: git config --edit --system 2. 全局级别(只针对特定用户) - 查看: git config --list --global - 设置: git config --global user.name xyz - 编辑全局配置文件: git config --edit --global 3. 仓库级别(仅适用于单个仓库) - 查看: git config --list --local - 设置: git config --local core.ignorecase true--local 可选) - 编辑仓库配置文件: git config --edit --local--local 可选)
如何查看所有设置? - 运行 git config --list,显示 系统全局 和(如果在仓库内)本地 配置。 - 运行 git config --list --show-origin,同时显示每个配置项的来源文件。

如何读取特定的配置?

  • 运行git config user.name以获取例如user.name的值。
  • 您还可以使用选项--system--global--local来在特定级别上读取该值。

参考:1.6 起步 - 安装 Git


1
git config --list 显示所有全局、系统和本地配置吗?我需要确认一下 :) - Adi Prasetyo
2
只是补充一下配置文件的位置:系统级别的配置文件在 C:\ProgramData\Git\config(Windows 系统);全局级别的配置文件在 C:\Users\user.gitconfig(Windows 系统)或者 ~/.gitconfig(Linux 系统);本地级别的配置文件在项目仓库的 .git/config 中。 - Alex
1
是的。您可以运行 git config --list --show-origin 来查找每个配置项的来源。 - kgf3JfUtW
每次我尝试使用git config --global --edit命令时,我都会进入一些疯狂的编辑器,并且经过一段时间的争论后,我想加入一些激进组织来追踪制造它的人。所以很抱歉,我不支持这个命令。 - Raymond A.
根据文档,可能会有多个用户特定的全局配置文件。这些文件包括:$XDG_CONFIG_HOME/git/config 第二个用户特定的配置文件。如果未设置$XDG_CONFIG_HOME或为空,则将使用$HOME/.config/git/config。如果您同时拥有此文件和~/.gitconfig文件,则可以使用以下命令查看它们都被视为全局文件: git config --list --show-origin --show-scope - Sam Hasler
这是我要找的!谢谢! - metalheadcoder

116
git config --list

使用命令行是一种方法。不过我通常会直接打开 .gitconfig 文件。


2
你是想使用 ~/.gitconfig 还是 git help config 中的 FILES 部分提到的其他文件? - chwarr
1
@chwarr - 抱歉,我不明白。我有“意图”吗? - Rook
1
我想你想说的是“我通常只是打开〜/ .gitconfig。”,因为Git不会在当前目录中查找.gitconfig,无论您在哪里。(.gitconfig〜/ .gitconfig名称不同的文件[通常]。)git help config中提到的其他文件具有不同的文件名,因此会有这样的假设。 - chwarr

40

自从 Git 2.26.0 版本起,您可以使用 --show-scope 选项:

git config --list --show-scope

示例输出:

system  rebase.autosquash=true
system  credential.helper=helper-selector
global  core.editor='code.cmd' --wait -n
global  merge.tool=kdiff3
local   core.symlinks=false
local   core.ignorecase=true

它可以与

  • --local (本地项目配置),--global(用户全局配置),--system(所有用户的配置)结合使用
  • --show-origin 显示确切的配置文件位置

38

您也可以调用git config -e 直接在您的编辑器中打开配置文件。Git 配置文件比 -l 的输出更易读,因此我经常倾向于使用-e标志。

因此,总结一下:

git config -l  # List Git configuration settings (same as --list)
git config -e  # Opens Git configuration in the default editor (same as --edit)
  • 如果没有参数,它将与本地的.git/config交互。
  • 使用--global参数时,它将与~/.gitconfig交互。
  • 而使用--system参数时,它将与$(prefix)/etc/gitconfig交互。

(我真的找不到$(prefix)的含义,但它似乎默认为$HOME。)


22
关于git config的一件重要事情是: git config--local--global--system三个级别以及相应的文件。
因此,您可以使用git config --localgit config --globalgit config --system
默认情况下,如果没有传递配置选项,则git config将写入本地级别。本地配置值存储在可以在存储库的.git目录中找到的文件中:.git/config 全局级别配置是特定于用户的,这意味着它应用于操作系统用户。全局配置值存储在位于用户主目录中的文件中。在Unix系统上为~/.gitconfig,在Windows上为C:\Users\<用户名>\.gitconfig
系统级配置应用于整个计算机。这涵盖了操作系统上的所有用户和所有存储库。系统级配置文件位于系统根路径下的gitconfig文件夹中。在Linux系统上为$(prefix)/etc/gitconfig。在Windows上,该文件可以在C:\ProgramData\Git\config中找到。
因此,您的选择是找到全局的.gitconfig文件并编辑它。
或者,您可以使用git config --global --list
这正是您所需要的。

Enter image description here


有没有一种方法可以获取这些文件的路径?我知道你已经解释了它们的位置,但我的问题是从另一个角度出发的。 - carloswm85
1
搜索类似于“如何找到系统、全局和本地的Git配置文件”的内容,你就能找到你需要的东西。 ;) - prosti

19

你也可以使用cat ~/.gitconfig


15

查看全局Git配置:

git config --list --global

查看本地Git配置:

git config --list --local


11
Git 2.6(2015年9月/10月)将添加选项--name-only以简化git config -l的输出:
参见提交a92330d提交f225987提交9f1429d(由Jeff King进行,昵称为peff)。
请参见提交ebca2d4提交905f203提交578625f(由SZEDER Gábor进行,昵称为szeder)。
(由Junio C Hamano(昵称为gitster)于提交fc9dfda中合并,2015年8月31日)

config: 添加'--name-only'选项,只列出变量名

'git config'仅能显示值或名称-值对,因此如果shell脚本需要设置的配置变量名称,必须运行 'git config --list' 或 '--get-regexp' 并解析输出以将配置变量名称与其值分离。
但是,这样的解析无法处理多行值。

尽管 'git config'可以生成空字符终止的输出以进行新行安全解析,但在这种情况下没有用处,因为shell无法处理null字符。

即使我们自己的bash完成脚本也遇到了这些问题。

通过引入'--name-only'选项来修改'--list'和'--get-regexp'的输出,只列出配置变量的名称,从而帮助完成脚本和shell脚本,使它们不再需要执行容易出错的后处理以分离变量名称和值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接