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

Posted

技术标签:

【中文标题】全局 git 配置数据存储在哪里?【英文标题】:Where is the global git config data stored? 【发布时间】:2011-01-08 00:26:14 【问题描述】:

当使用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 上

【问题讨论】:

你是用msysgit还是别的什么? git config --global --edit 应该告诉你确切的位置,无论你有什么样的设置——只要看看你的编辑器中出现了什么文件。 git config --global --list 在它不存在时也很有用,因为它给出了 git 期望它的位置。 @AJP:这正是我的问题,但是如何更改它想要保存/读取的位置?? git config --list --show-origin 会告诉你位置 【参考方案1】:

2016 年更新:使用 git 2.8(2016 年 3 月),您可以简单地使用:

git config --list --show-origin

使用 Git 2.26(2020 年第一季度),您可以add a --show-scope option

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

您将看到在哪里设置了哪个配置。 见“Where do the settings in my Git configuration come from?”

正如Stevoisiak 指出in the comments,

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

(如最新的PortableGit-2.14.2-64-bit.7z.exe,可以任意解压)


原始答案(2010 年)

来自the docs:

--全局

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

由于您使用的是Git for Windows,因此可能不清楚它对应的位置。但是,如果您查看 etc/profile(在 C:\Program Files\Git 中),您会看到:

HOME="$HOMEDRIVE$HOMEPATH"

意思:

C:\Users\MyLogin

(在 Windows 7 上)

这意味着对于 Windows 7 中的 Git,该文件位于 C:\Users\MyLogin\.gitconfig 中。

【讨论】:

我真的很笨,我没有在编辑命令中添加“--global”标志! “git config --global --edit”显示了包含我所有配置更改的文件,“git config --edit”是我一直打开并思考的文件,我刚刚设置的编辑器/比较/等配置项在哪里!非常感谢。 谢谢。我见过其他地方,它说它位于 %USERPROFILE%。在我的计算机上,HOMEDRIVE 和 HOMEPATH 被重新映射到网络驱动器。在我的本地驱动器上进行的搜索一无所获。所以这很有帮助。 真的很有用,我遇到了同样的问题——如果你在一个带有映射主驱动器的域上,它会尝试在那里创建 git 配置。这将是一个很好的功能请求 - 使用 %HOMEDRIVE% 或 %USERPROFILE% 当它只针对一个用户时,为什么称为全局?不会(对于 unix)/etc/gitconfig 是“全局”,~/.gitconfig 只是“本地”.....我猜.git/config“超本地”-----基本上,我发现“全球”这个令人困惑的术语,我想知道这个命名是否有充分的理由? @PeterAjtai "global" 因为它适用于您的所有存储库。与“本地”(仅适用于一个仓库)或“系统”(适用于所有仓库,适用于所有用户)相反【参考方案2】:

.gitconfig文件位置

macOS 测试正常

全局

# global config
$ cd ~/.gitconfig

# view global config
$ git config --global -l

本地

# local config
$ cd .git/config

# view local config
$ git config -l


也许对你有好处:VimVSCode 用于编辑 git config


# open config with Vim

# global config
$ vim ~/.gitconfig

# local config
$ vim .git/config


# open config with VSCode

# global config
$ code ~/.gitconfig

# local config
$ code .git/config

【讨论】:

【参考方案3】:

我的 Git 安装在:C:\Users\_myuserfolder_\AppData\Local\Programs\Git

【讨论】:

【参考方案4】:

正如@MatrixFrog 在他们的comment 中指出的那样,如果目标是编辑配置,您可能需要运行:

git config --global --edit

此命令将在选择的编辑器中打开配置文件(在本例中为 --global 之一),并等待文件关闭(就像在 git rebase -i 期间一样)。

【讨论】:

你可以用它来确定全局.gitconfig的位置——只要你的编辑器告诉你文件所在的目录。你也可以使用其他开关(--system, --local 等)查找和编辑其他 .gitconfig 位置。附言-e--edit 相同 这帮助我找到了我的公司保存用户配置文件的位置【参考方案5】:

我在 Windows 8.1 上将 SmartGit 与 msysgit 一起使用,并注意到 gitconfig 文件可以有三个不同的位置:

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

但是使用的是来自%USERPROFILE%\.gitconfig的那个。

【讨论】:

【参考方案6】:

我认为发布这句话很重要:

Git for Windows 支持四个级别的配置。最低级别是机器特定的配置设置,称为“便携式”,并且存在于“%ProgramData%\Git\config”中。一个优先级是安装特定配置设置,称为“系统”,位于“\mingw64\etc\gitconfig”。这两个配置文件,一般都需要提升权限才能修改。

从称为“全局”配置的使用特定值开始,可以在“%UserProfile%.gitconfig”中找到,我们找到“用户可编辑”配置文件。最高优先级的配置设置在“本地”配置中,通常可以在“.git\config”中找到。

看到链接的博客中的建议是修改“系统”或“安装”特定配置设置,这很好,但用户应该期望其他安装的 Git 不会吸收这些设置。如果您想要机器范围的设置,请使用“便携式”配置文件,否则选择“全局”或“本地”配置文件。

希望人们会发现此信息有用。

source

【讨论】:

【参考方案7】:

什么时候创建全局 .gitconfig 文件?

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

请求 Git 创建它的一种方法是请求编辑。这样做会强制创建文件。

git config --global --edit

如果您在发出此命令时监视用户的主文件夹,您会看到 .gitconfig 文件神奇地出现。

git 配置存储在哪里?

这里简要介绍了与三个 Git 作用域相关的配置文件的名称和位置,即 systemgloballocal

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

当然,眼见为实,所以这里有一张图片,展示了每个文件和每个位置。我从我写的一篇关于该主题的文章中提取了图像。

Windows Git configuration file locations (TheServerSide.com)

【讨论】:

第四个地方叫做便携式配置:here 他们提到了 4 个地方; Windows 版 Git 支持四个级别的配置。在最低级别是机器特定的配置设置,称为“便携”,并且存在于“%ProgramData%\Git\config” 大吃一惊!我将使用新信息更新文章。干杯!【参考方案8】:

如果您在 Windows PC 上使用 TortoiseGit,您可以使用:

Settings / Git / Config / Edit global .gitconfig

打开全局 .gitignore 文件。

但是,如果您在域中使用 Windows (7) PC,您的配置文件目录可能是网络共享(作为驱动器安装)。在这种情况下,TortoiseGit(至少:1.6.5.0)将您指向错误的目录(在 c:...上)。有关更多信息,请参阅已关闭的 TortoiseGit issue 922。或者使用 %HOMEDRIVE%%HOMEPATH% 打开包含 .gitignore 文件的目录。

【讨论】:

【参考方案9】:

在 *nixes 上,它位于 ~/.gitconfig。你家有对应的文件吗?

在 Windows 上你可以输入 git bash

notepad ~/.gitconfig

【讨论】:

这在windows上应该是一样的。 如果您想轻松获得它,请写一个别名 :) 这是我的:alias gitconfig='open -a Sublime\ Text.app ~/.gitconfig'。使用你想要的任何文本编辑器。【参考方案10】:

我的全局 .gitconfig 也有问题 这是因为有人也有这种奇怪的情况

git 说:

致命:读取配置文件时发生未知错误

现在我修好了。问题是此文件夹中的第二个.gitconfig

c:\Users\myUser.config\git\config

我不知道它是从哪里来的……但现在一切又像魅力一样了。

【讨论】:

【参考方案11】:

我也有类似的问题;问题是.gitconfig 文件位于

C:\Users\MyLogin\.gitconfig\

(在 Windows 7 上)

换句话说,文件位于 C:\Users\MyLogin\.gitconfig\.gitconfig,而不是 C:\Users\MyLogin\.gitconfig(这是 Git 查找文件的地方)。 p>

【讨论】:

【参考方案12】:

卸载 Msysgit 并安装 Cygwin + Git。然后全局 '.gitconfig' 将在这里: C:\cygwin(64)\home\[userName]\.gitconfig 。

现在您不必担心可能被其他程序使用的环境变量。例如,我的环境变量将我指向工作 Windows 域环境中的映射驱动器。我不希望我的全局 .gitconfig 坐在我的“主”映射驱动器上。我也不知道可能依赖于该 windows 环境变量的其他应用程序会发生什么。出于某种原因,运营部门可能需要将该环境变量设置为映射驱动器。

此外,如果您使用此方法指定全局“.gitconfig”的特定路径,您不必担心 Mysysgit 会覆盖您的“配置文件”配置设置。

一般来说,自救,在 windows 中使用 cygwin bash shell 会更快乐

【讨论】:

【参考方案13】:

我正在运行 Windows 7 并按照 GitHub 上的说明使用 git 作为设置(一两年前)。我会想到一个相当常见的用例。上面的答案都没有帮助我,经过一番挫折后,我最终在以下目录中找到了我的“真正的”gitconfig 文件;

C:\Users\Bill\AppData\Local\GitHub\PortableGit_054f2e797ebafd44a30203088cd 3d58663c627ef\等

显然替换您的用户名,并且大概 PortableGit_ 之后的后缀是唯一的 GUID 或类似的。

【讨论】:

只有在使用 GitHub for Windows 时才会出现这种情况。【参考方案14】:

我还在我的 Windows 机器上寻找全局 .gitconfig,并使用 git 发现了这个巧妙的技巧。

执行:git config --global -e,然后,如果幸运的话,您将获得一个加载了全局 .gitconfig 文件的文本编辑器。只需从那里查找文件夹(或尝试另存为...),等等! :-)

【讨论】:

正是我想要的! -e 命令!因为一次编辑一个属性并不是我的主旨。 运行这个命令也会创建一个C:\Users\<user_name>\.gitconfig,如果它丢失了。 我在非窗口模式下运行,在任何地方都找不到位置【参考方案15】:

注意(对于 *nix 平台)可能有用:某些类型的全局 git 配置/信息存储在 /usr/share/git-core/ 中,例如 git 自动完成脚本和以下(默认)挂钩:

应用补丁消息 更新后 预提交 准备提交消息 提交消息 预应用补丁 预变基 更新

每一个都可以包含它们自己的一组要执行的命令,时间由它们各自的文件名描述。

【讨论】:

对 OP 问题没有用处。【参考方案16】:

msysgit 的路径是:

Windows XP -C:\Documents and Settings\<user_name>\.gitconfig

Windows Vista+ C:\Users\<user_name>\.gitconfig

【讨论】:

最好将其描述为 %USERPROFILE%,然后答案将适用于所有 Windows 版本,过去、现在和未来。 除了我认为它实际上是 %HOMEDRIVE%%HOMEPATH% 和其他答案一样,在许多情况下等于 %USERPROFILE%,但我们中的一些人有 IT 配置将其指向映射的驱动器。 【参考方案17】:

除非您定义了 HOME 环境变量,否则全局位置是在 Windows MsysGit 上使用 HOMEDRIVE 和 HOMEPATH 环境变量派生的。 'profile' 脚本中对此进行了详细说明。

在我的公司环境中,HOMEDRIVE 是 H:,然后映射到网络 URL \\share\$。然后将整个批次映射为“我的文档”,这不是其他人所期望的。驱动器到 URL 重新映射可能存在一些进一步的问题。无论如何,我什至无法调整 HOMEDRIVE 或 HOMEPATH 变量。

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

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

【讨论】:

我正在滚动查看即将发布在 HOMEDRIVEHOMEPATH 变量上的答案,因为他们只是在使用 Bower 时发现了我。似乎Windows上的许多实用程序从<system>:\User\<username>\.gitconfig, while the Git tool itself saves to %HOMEPATH%\.gitconfig. I had to go one step further and copy the updated config file from my H:`(我们的网络为此使用相同的驱动器号)读取到我的本地用户文件夹,然后Git才正确使用规则当被 Bower 调用时。 @ZaLiTHkA,在我的公司网络中,用户的主 (H:) 驱动器也被重新映射回 C:\User\ 位置,所以我没有注意到这一点。如果您可以确定哪些 FOSS 实用程序会出错,那么这将是有助于报告/修复这些工具的有用信息。如果它们是内部公司工具,您就靠自己了 ;-) 除非它比简单的 setter 行更复杂,否则我没有在 etc\profile 脚本中看到 HOME 定义。它似乎仍然像描述的那样工作,但我不清楚现在 HOME 设置在哪里。 @ojchase 我的部分答案是 --glob config 是专门与 Windows 相关的。核心 Linux git 写入诸如 XDG 事物所指向的地方(即我知道 linux 写入其他地方并有其他约定,重要的是它确实有一个根目录,而 Windows 有“驱动器”;-)跨度> @PhilipOakley 我实际上也指的是 Windows;对不起,我不清楚。结合您的答案和其他人的答案,我期待C:\Program Files\Git\etc\profile 中有某种HOME = $HOMEDRIVE$HOMEPATH(或类似的)行,并且该行似乎不存在,但可能已经习惯了?我无法确切地弄清楚 $HOME 的设置是什么,除非它是由我不想这样做的环境变量设置的。

以上是关于全局 git 配置数据存储在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

在哪里存储持久容器(或任何全局对象)? AppDelegate 还是场景委托?

您将 PHP 脚本配置(如数据库访问数据)存储在哪里?

在公共 Rails 应用程序中将敏感数据存储在哪里?

在存储库中添加 .gitconfig 会覆盖我的全局 .gitconfig 文件配置吗?

具有全局持久存储的基于核心数据文档的应用程序

内核全局变量存储在哪里?