全局git配置数据存储在哪里?

1315
当使用git config --global来设置内容时,它会将其写入哪个文件?
例如:
git config --global core.editor "blah"

我在这些地方找不到它:

C:\Program Files\Git\etc\gitconfig

C:\myapp\.git\config

我没有设置环境变量(ENV)?

我的Git版本为1.6.5.1.1367.gcd48,运行在Windows 7上。


2
您是在使用msysgit还是其他工具? - codeguru
434
无论你使用何种设置,git config --global --edit 都会告诉你确切的位置 —— 只需查看编辑器中出现的文件即可。 - Tyler
72
git config --global --list 命令也很有用,即使配置文件不存在,它也会告诉你 git 预期它在哪个位置。 - AJP
6
这正是我的问题,但如何改变它想要保存/读取的位置? - Stijn de Witt
19
"git config --list --show-origin" 命令可以告诉你配置文件的位置。请注意,翻译过程中不得添加解释或其他内容。 - eddyP23
显示剩余8条评论
20个回答

1639

2016 年更新:使用 Git 2.8(2016 年 3 月)起,您可以直接使用以下命令:

git config --list --show-origin

从 Git 2.26(2020 年第一季度)开始,您可以添加 --show-scope 选项

git config --list --show-origin --show-scope

您将看到配置文件设置在哪里。
请参见“我的Git配置设置来自哪里?”

正如Stevoisiak评论中指出的那样

它适用于非标准安装位置 (例如Git Portable)。

(例如最新版本的PortableGit-2.14.2-64-bit.7z.exe,可以在任何您想要的位置解压缩)


原始回答 (2010)

文档中:

--global

对于写入选项: 写入全局~/.gitconfig文件而不是存储库的.git/config文件。

由于您正在使用Git for Windows,可能不清楚此位置对应的是哪个文件夹。但是,如果您查看C:\Program Files\Git中的etc/profile文件,您会看到:

HOME="$HOMEDRIVE$HOMEPATH"

意思:

C:\Users\MyLogin

(在 Windows 7 上)

这意味着在 Windows 7 上,Git 配置文件位于 C:\Users\MyLogin\.gitconfig


12
我当时真的很傻,没有在“edit”命令中加上“--global”标志!“git config --global --edit”显示了包含我所有配置更改的文件,“git config --edit”是我一直打开并思考着:“我刚设置的编辑器/比较等配置项在哪里!”非常感谢。 - Ian Vaughan
7
谢谢。我看到其他地方说它在 %USERPROFILE% 下。但在我的电脑上,HOMEDRIVE 和 HOMEPATH 被映射到网络驱动器。在本地驱动器上搜索一无所获,这个信息帮了我很多。 - Mike M. Lin
2
为什么这被称为“全局(global)”,当它只适用于一个用户?对于 Unix 系统来说,/etc/gitconfig 不是更适合称为“全局”(global),而 ~/.gitconfig 才应该称为“本地”(local)吗...... 我猜 .git/config 应该被称为"超本地"(hyper-local) ----- 基本上,我认为将此称为“全局”(global)有点令人困惑,我想知道是否有一个很好的命名规则来解释这个术语? - Peter Ajtai
7
“全局”是因为它适用于您的所有存储库,与“本地”(仅适用于一个存储库)或“系统”(适用于所有存储库和所有用户)相对。 - VonC
2
事实证明,像.git存储库中的用户特定文件这样的文件与我的git安装完全不在同一驱动器上,这是由于我所在的IT配置造成的。 - Raj
显示剩余9条评论

144

我也在我的Windows机器上寻找全局的.gitconfig, 幸运的是,我发现了一个使用Git的好技巧。

执行git config --global -e,如果你很幸运,就会打开一个文本编辑器并加载全局的.gitconfig文件。从那里简单地查找文件夹(或尝试"另存为..."),et voilà! :-)


2
运行此命令还将创建一个 C:\Users\<user_name>\.gitconfig 文件(如果它不存在)。 - pmbanka
我正在非窗口模式下运行,但无法找到位置。 - Triynko

100

在*nix系统中,它在~/.gitconfig中。 在您的主目录中是否有相应的文件?

在Windows上,您可以在Git Bash中键入以下内容:

notepad ~/.gitconfig

6
在 Windows 上应该是一样的。 - Felix Kling
2
如果你想轻松地完成它,写一个别名 :) 这是我的:alias gitconfig='open -a Sublime\ Text.app ~/.gitconfig'。使用任何文本编辑器都可以。 - aug

43
msysgit的路径如下:
Windows Vista及以上版本:C:\Users\\.gitconfig

18
最好将其描述为“%USERPROFILE%”,这样答案就适用于所有过去、现在和未来的Windows版本。 - jarmod
4
除了其他答案提到的%HOMEDRIVE%%HOMEPATH%,我认为实际上就是这个,它可以在很多情况下等同于%USERPROFILE%,但有些人的IT配置会将其指向映射驱动器。 - ojchase
@ojchase 是正确的。我在公司环境中,其中%HOMEDRIVE%%HOMEPATH%被映射到网络驱动器。这意味着当我不在现场时无法找到gitconfig,这将破坏依赖于gitconfig的任何内容。 - Doctor Jones

35

在Windows MsysGit上,全局位置是通过使用HOMEDRIVE和HOMEPATH环境变量导出的,除非你已经定义了HOME环境变量。这在“profile”脚本中有详细描述。

在我的公司环境中,HOMEDRIVE是H:,然后被映射到一个网络URL \\share\$。整个映射再被映射到"My Documents",这不是其他人所期望的位置。可能还存在一些关于驱动器到URL重映射的问题。我甚至无法调整HOMEDRIVE或HOMEPATH变量。

在我的情况下,我定义了一个个人HOME环境变量,并将其指向D:\git\GitHOME,并将所有这些没有扩展名的GIT文件复制到GitHOME目录中进行安全保存。

Windows环境变量可以通过“我的电脑”属性对话框中的高级选项卡来设置。


1
我正在浏览有关HOMEDRIVEHOMEPATH变量的答案,因为在使用Bower时它们让我遇到了问题。似乎Windows上的许多实用程序都从<system>:\User\<username>\.gitconfig读取,而Git工具本身保存在%HOMEPATH%\.gitconfig中。我不得不进一步操作,将更新的配置文件从我的H:(我们的网络使用相同的驱动器字母)复制到我的本地用户文件夹中,只有这样,当Bower调用Git时,Git才能正确使用规则。 - user909694
1
@ZaLiTHkA,在我的公司网络中,用户的主目录(H:)驱动器也被重新映射回C:\ User \位置,因此我没有注意到这一点。如果您能确定哪些是犯错误的FOSS实用程序,那么这将是有用的信息,以帮助报告/修复这些工具。如果它们是内部公司工具,那么您就自己解决吧;-) - Philip Oakley
除非它比一个简单的setter行更复杂,否则我没有看到在etc\profile脚本中定义HOME。它似乎仍然按照描述的方式运作,但我不清楚现在HOME被设置在哪里。 - ojchase
@ojchase 我回答中提到的 --glob config 写入位置是特别针对 Windows 的。核心 Linux git 写入到 XDG 指定的位置(即我知道 Linux 会写入其他位置并有其他惯例,而且重要的是它有一个根目录,而 Windows 则有“驱动器”;-))。 - Philip Oakley
@PhilipOakley 我实际上也是在指 Windows;抱歉我表达不清。结合你的回答和其他人的回答,我期望在 C:\Program Files\Git\etc\profile 中有类似于 HOME = $HOMEDRIVE$HOMEPATH(或类似)的行,但这一行似乎不存在,但可能以前用过?我还没有弄清楚到底是什么设置了 $HOME,除非它是由环境变量设置的,但我不想这样做。 - ojchase

19

全局的.gitconfig文件是何时创建的?

首先,git在安装过程中不会自动创建全局配置文件(.gitconfig)。直到第一次写入后该文件才会被创建。如果你从未设置系统变量,那么它就不会存在于你的文件系统中。我猜这可能是问题的根源。

请求编辑是要求Git创建它的一种方式。这样做将强制创建该文件。

git config --global --edit

当你发出这个命令时,请监视用户的主目录,你会看到.gitconfig文件神奇地出现了。

Git配置存储在哪里?

以下是涉及三个Git范围的配置文件名称和位置,即系统全局本地的快速概述:

  • 系统Git配置:名为gitconfig的文件位于-git-install-location-/ming<32>/etc
  • 全局Git配置:名为.gitconfig的文件位于用户的主目录(C:\Users\git user)
  • 本地Git配置:本地repo的.git文件夹中名为config的文件

当然,眼见为实,下面是一张显示每个文件和每个位置的图像。我从我撰写的一篇关于此主题的文章中提取了该图像。

Windows Git 配置文件位置 (TheServerSide.com)

Git配置文件位置


1
有一个称为“便携式配置”的第四个位置:在此处他们提到了这4个位置; Git for Windows支持四个级别的配置。最低级别是机器特定的配置设置,称为“便携式”,位于“%ProgramData%\Git\config”中。 - Badr Elmers

14

正如@MatrixFrog在他们的评论中指出的那样,如果目标是编辑配置文件,则您可能想要运行:

git config --global --edit

这个命令会打开配置文件(在本例中是--global文件),在所选的编辑器中等待文件关闭(就像在git rebase -i期间一样)。


1
你可以使用这个命令来找到全局的.gitconfig文件所在的位置,只要你的编辑器告诉你该文件所在的目录即可。你也可以使用其他开关(例如--system--local等)来查找和编辑其他.gitconfig文件的位置。另外,-e--edit是相同的。 - LightCC

12

如果你在Windows电脑上使用TortoiseGit,你可以使用以下方法:

Settings / Git / Config / Edit global .gitconfig

打开全局的 .gitignore 文件。

但是如果你在一个域中使用 Windows(7)电脑,则你的配置文件目录可能是网络共享(作为驱动器挂载)。在这种情况下,TortoiseGit(至少:1.6.5.0)会将你引导到错误的目录(在C:...上)。请参阅已关闭的 TortoiseGit 问题 922 以获取更多信息。或者使用 %HOMEDRIVE%%HOMEPATH% 打开包含 .gitignore 文件的目录。


10

我正在使用 SmartGit 和 msysgit 在 Windows 8.1 上,并注意到 gitconfig 文件有三个不同的位置:

%USERPROFILE%\.gitconfig
C:\Program Files (x86)\Git\etc\gitconfig
C:\Program Files (x86)\SmartGitHg\git\etc\gitconfig

但实际使用的是 %USERPROFILE%\.gitconfig 中的配置。


9

完全同意@cameron-mckenzie此页面上方的回答中针对“全局.gitconfig文件是何时创建的?”的回答(这显然适用于每个操作系统)。他的其余回答涉及Win7系统。

Win10系统中,当您通过Windows命令提示符设置user.nameuser.email系统变量时,.gitconfig全局文件也只会在第一次创建。一旦设置完成,.gitconfig文件将在%USERPROFILE%目录中创建。

以下命令适用于Win和MacOS

因此,假设.gitconfig文件已经存在,则可以通过命令提示符/Gitbash/Terminal了解其位置:

git config --global --list --show-origin

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