全局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个回答

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

  • applypatch-msg
  • post-update
  • pre-commit
  • prepare-commit-msg
  • commit-msg
  • pre-applypatch
  • pre-rebase
  • update

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


4

我也遇到了一个问题,与我的全局 .gitconfig 有关。

如果有人也遇到了这种奇怪的情况,那么就会看到以下错误提示:

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

现在我已经解决了这个问题。问题出在我文件夹中存在第二个 .gitconfig 文件:

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

我不知道它来自哪里...... 但现在一切都像以前一样正常工作。


4
我正在使用安装在Windows 7上的git,按照GitHub(一两年前)的说明进行设置。这应该是一个相当常见的用例。以上任何答案都没有帮助我,经过很多挫折后,我最终在以下目录中找到了我的“真正”的gitconfig文件;
C:\ Users \ Bill \ AppData \ Local \ GitHub \ PortableGit_054f2e797ebafd44a30203088cd 3d58663c627ef \ etc
显然将您的用户名和PortableGit_后缀替换为唯一的GUID或类似物。

1
这仅适用于使用GitHub for Windows的情况。 - Snake

3
我认为发布以下引用很重要:
Git for Windows支持四个配置级别。最低级别是机器特定的配置设置,称为“portable”,存储在“%ProgramData%\Git\config”中。一个优先级别是安装特定的配置设置,称为“system”,它们位于“\mingw64\etc\gitconfig”中。这两个配置文件通常需要提升的权限才能修改。
从用户特定值开始,称为“global”配置,可以在“%UserProfile%.gitconfig”中找到,“user editable”配置文件。最高优先级的配置设置在“local”配置中,通常可以在“.git\config”中找到。
我在链接的博客中看到的建议是修改“system”或“installation”特定的配置设置,这是可以的,但用户应该预期其他Git安装不会吸收这些设置。如果您想要机器范围的设置,请使用“portable”配置文件,否则选择“global”或“local”配置文件。
希望人们发现这些信息有用。

2

.gitconfig文件位置

在macOS上测试OK

全局设置

# global config
$ cd ~/.gitconfig

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

本地

# local config
$ cd .git/config

# view local config
$ git config -l


也许对你有帮助:使用 VimVSCode 编辑 git 配置可以获得额外的奖励。

# 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


2
卸载Msysgit并安装Cygwin + Git。然后全局的'.gitconfig'将在此处:C:\cygwin(64)\home\[用户名]\.gitconfig。
现在您不必担心其他程序可能使用的环境变量。例如,我的环境变量指向我在工作Windows域环境中映射的驱动器。我不希望我的全局.gitconfig位于我的“主目录”映射驱动器上。我也不知道其他依赖该Windows环境变量的应用程序可能会发生什么情况。操作部门可能需要将该环境变量设置为映射驱动器的原因。
此外,如果您使用此方法指定特定路径到全局'.gitconfig',则无需担心Mysysgit覆盖您的'profile'配置设置。
总之,在Windows中保存自己并使用Cygwin Bash shell会更加愉快。

2

我曾经遇到过类似的问题;问题出在.gitconfig文件的位置上。

C:\Users\MyLogin\.gitconfig\

(在Windows 7上)

换句话说,该文件位于C:\Users\MyLogin\.gitconfig\.gitconfig,而不是C:\Users\MyLogin\.gitconfig(Git查找文件的位置)。


0
根据https://git-scm.com/docs/git-config,你可以看到--global引用了~/.gitconfig文件:

--global用于写入选项:将选项写入全局的~/.gitconfig文件,而不是存储库的.git/config文件,如果存在$XDG_CONFIG_HOME/git/config文件,则写入该文件,如果不存在则写入~/.gitconfig文件。

用于读取选项:仅从全局的~/.gitconfig和$XDG_CONFIG_HOME/git/config文件中读取,而不是从所有可用文件中读取。

另请参阅FILES。

FILES引用https://git-scm.com/docs/git-config#FILES确实显示了~/.gitconfig作为全局配置文件的参考:

文件 默认情况下,git config 会从多个文件中读取配置选项: $(prefix)/etc/gitconfig 系统范围的配置文件。 $XDG_CONFIG_HOME/git/config
~/.gitconfig 用户特定的配置文件。当 XDG_CONFIG_HOME 环境变量未设置或为空时,$HOME/.config/ 会被用作 $XDG_CONFIG_HOME。
这些也被称为“全局”配置文件。如果两个文件都存在,则按照上述顺序读取两个文件。

0

我已经将Git安装在:C:\Users\_myuserfolder_\AppData\Local\Programs\Git


-1

git 帮助 配置

文件部分有详细描述。

enter image description here


请查看 *为什么在提问时不上传代码/错误的图片?(例如,"只有无法用其他方式清晰表达问题时才应使用图片,例如提供用户界面的截图。"*),并采取适当的行动(它也涵盖了答案和大多数文本)。提前致谢。 - Peter Mortensen

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