ChatGPT解决这个技术问题 Extra ChatGPT

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

使用 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 会告诉你位置

S
Stevoisiak

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 便携版)

(就像最新的 PortableGit-2.14.2-64-bit.7z.exe,可以在任何你想要的地方解压缩)

原始答案(2010)

the docs

--global 用于写入选项:写入全局 ~/.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 “全球”,因为它适用于您的所有存储库。与“本地”(仅适用于一个存储库)或“系统”(适用于所有存储库,适用于所有用户)相反
A
Alex Feinman

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

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


正是我想要的! -e 命令!因为一次编辑一个属性并不是我的主旨。
如果缺少 C:\Users\<user_name>\.gitconfig,运行此命令还将创建一个 C:\Users\<user_name>\.gitconfig
我在非窗口模式下运行,无法在任何地方找到位置
M
Michael Freidgeim

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

在 Windows 上,您可以输入 git bash

notepad ~/.gitconfig

这在 Windows 上应该是相同的。
如果您想轻松获得它,请写一个别名 :) 这是我的:alias gitconfig='open -a Sublime\ Text.app ~/.gitconfig'。使用您想要的任何文本编辑器。
h
hash

msysgit 的路径是:

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

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


将其描述为 %USERPROFILE% 可能更好,那么答案将适用于所有 Windows 版本,过去、现在和未来。
除了我认为它实际上是 %HOMEDRIVE%%HOMEPATH% 和其他答案一样,在许多情况下等于 %USERPROFILE% ,但我们中的一些人有 IT 配置将其指向映射驱动器。
P
Philip Oakley

全局位置是在 Windows MsysGit 上使用 HOMEDRIVE 和 HOMEPATH 环境变量派生的,除非您已经定义了 HOME 环境变量。 '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 才正确使用规则当鲍尔打电话时。
@ZaLiTHkA,在我的公司网络中,用户的主 (H:) 驱动器也被重新映射回 C:\User\ 位置,所以我没有注意到这一点。如果您可以确定哪些 FOSS 实用程序会出错,那么这将是有用的信息,可帮助您报告/修复这些工具。如果它们是内部公司工具,您就靠自己了 ;-)
除非它比简单的 setter 行更复杂,否则我看不到在 etc\profile 脚本中定义的 HOME。它似乎仍然像描述的那样起作用,但我不清楚现在 HOME 设置在哪里。
@ojchase 我的部分答案是 --glob config 是专门与 Windows 相关的。核心 Linux git 写入诸如 XDG thingy 指示的地方(即我知道 linux 写入其他地方并有其他约定,重要的是它确实有一个根目录,而 Windows 有“驱动器”;-)
@PhilipOakley 我实际上也指的是 Windows;对不起,我不清楚。结合您和其他人的回答,我期待在 C:\Program Files\Git\etc\profile 中有某种 HOME = $HOMEDRIVE$HOMEPATH (或类似的)行,而该行似乎不存在,但可能已经习惯了?我无法确切地弄清楚 $HOME 的设置是什么,除非它是由我不想这样做的环境变量设置的。
C
Cameron McKenzie

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

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

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

git config --global --edit

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

git配置存储在哪里?

以下是与三个 Git 作用域(即系统、全局和本地)相关的配置文件的名称和位置的简要说明:

系统 Git 配置:名为 gitconfig 的文件位于 -git-install-location-/ming<32>/etc

全局 Git 配置:名为 .gitconfig 的文件位于用户的主文件夹(C:\Users\git 用户)

本地 Git 配置:本地 repo 的 .git 文件夹中名为 config 的文件

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

Windows Git configuration file locations (TheServerSide.com)

https://i.stack.imgur.com/XqZJe.jpg


还有一个叫做便携式配置的地方:here 他们提到了 4 个地方; Windows 版 Git 支持四个级别的配置。最低级别是机器特定的配置设置,称为“便携式”,并存在于“%ProgramData%\Git\config”
脑洞大开!我将使用新信息更新文章。干杯!
Y
Yue Lin Ho

如果您在 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 文件的目录。


P
Parzh from Ukraine

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

git config --global --edit

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


您可以使用它来确定全局 .gitconfig 的位置 - 只要您的编辑器告诉您文件所在的目录。您还可以使用其他开关(--system--local 等)来查找和编辑其他 .gitconfig 个位置。 PS -e--edit 相同
这帮助我找到了我的公司保存用户配置文件的位置
B
Benny Neugebauer

我在 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 的那个。


s
samstav

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

应用补丁消息

更新后

预提交

准备提交消息

提交消息

预应用补丁

预变基

更新

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


对 OP 问题没有用。
R
Rishabh B

完全同意@cameron-mckenzie关于全局.gitconfig文件何时创建?的回答here on this page, above(这显然适用于每个操作系统)。他的其余答案涉及Win7系统。

Win10 系统 中,只有当您倾向于设置 user.name & 时,才会首次创建 .gitconfig 全局文件。 user.email 系统变量通过 Windows 命令提示符。
一旦设置,.gitconfig 文件将在 %USERPROFILE% 目录中创建。

下面的命令适用于 Win 和 MacOS,两者

所以,让我们假设 .gitconfig 文件是否已经存在。您可以通过命令提示符/Gitbash/终端了解其位置:

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

B
Bill Forster

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

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

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


只有在使用 GitHub for Windows 时才会出现这种情况。
M
Machavity

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

git 说:

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

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

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

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


B
Badr Elmers

我认为发布此报价很重要:

Git for Windows 支持四个级别的配置。最低级别是机器特定的配置设置,称为“便携式”,并且存在于“%ProgramData%\Git\config”中。一个优先级是安装特定配置设置,称为“系统”,位于“\mingw64\etc\gitconfig”。这两个配置文件,一般都需要提升权限才能修改。从称为“全局”配置的使用特定值开始,可以在“%UserProfile%.gitconfig”中找到,我们找到“用户可编辑”配置文件。最高优先级的配置设置在“本地”配置中,通常可以在“.git\config”中找到。它看到链接的博客中的建议是修改“系统”或“安装”特定的配置设置,这很好,但用户应该期望 Git 的其他安装不会吸收这些设置。如果您想要机器范围的设置,请使用“便携式”配置文件,否则选择“全局”或“本地”配置文件。希望人们会发现这些信息有用。

source


N
Northstrider

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

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

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

一般来说,保存自己并在windows中使用cygwin bash shell并更快乐


r
rolandog

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

C:\Users\MyLogin\.gitconfig\

(在 Windows 7 上)

换言之,该文件位于 C:\Users\MyLogin\.gitconfig\.gitconfig 中,而不是 C:\Users\MyLogin\.gitconfig(Git 正在寻找文件的位置)。


x
xgqfrms

.gitconfig 文件位置

macOS 测试正常

全球的

# global config
$ cd ~/.gitconfig

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

当地的

# local config
$ cd .git/config

# view local config
$ git config -l

也许对你有好处:编辑 git config 的 Vim 或 VSCode


# 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


h
hx_hxl

git help config

文件部分有详细的描述。

https://i.stack.imgur.com/DNCf5.png


A
AS Mackay

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