有趣的问题:Git在哪里存储用户信息?

26

我想知道 Git 存储用户信息的位置。我创建了一个仓库,我和我的朋友都在上面工作。当我们提交时,我们可以看到每个修订版本的不同作者是我们两个人。虽然他使用 git config --global 在他的主目录下创建了一个 .gitconfig 文件,但我在我的主目录中找不到这个文件。那么我的用户信息存储在哪里?git config --global 只影响单个登录用户吗?

4个回答

32

默认情况下,配置文件有3个路径。

  • 代码库自身: <your_git_repository>/.git/config
  • 用户主目录: ~/.gitconfig
  • 系统范围目录: $(prefix)/etc/gitconfig

--global选项始终使用主目录。请注意,git将尝试读取所有这些配置文件。如果找到一个,它会加载它并移动到下一个。本地的优先级高于全局的,而全局的优先级高于系统范围的。它使用了一种简单的键合并算法。

参考:git-config FILES


奇怪,运行find / -name gitconfig没有返回任何结果。 - goh
你有一个名为GIT_CONFIG_LOCAL的环境变量吗?@Bombe在他的回答中提到了另一种可能性。 - jweyrich
@yair 这是编译时指定的前缀路径。如果您使用软件包管理器(apt、yum等)安装 Git,则会全局安装它,没有前缀。如果您使用类似于 MacPorts、Homebrew 这样的工具,则会指定一个前缀,例如 /usr/local 或 /opt/local。您可以在编译大多数使用 autotools 的软件时指定此前缀。 - jweyrich

7

如果您没有在配置文件中存储用户信息,Git会在环境变量中查找提交者的信息,使用变量GIT_COMMITTER_NAMEGIT_COMMITTER_EMAILGIT_AUTHOR_NAMEGIT_AUTHOR_EMAIL。如果缺少这些变量,则使用您的用户名和主机名构造一个值。因此,即使没有任何用户信息存储在配置文件中,两个用户的提交者信息也会不同。


这些信息(我的电子邮件)会公开吗?当我提交到GitHub并提供我的电子邮件时,除了GitHub服务器之外,它是否对任何人可见? - Shimmy Weitzhandler

6
有三个位置 - 系统(所有用户位于 $(prefix)/etc/gitconfig),全局(用户位于 ~/.gitconfig)和本地(存储在 .git/config 文件中)可以设置git配置。任何配置都应该存在这三个位置之一才能被git使用。
但是,如果设置了 GIT_CONFIG 或其他环境变量,则可能来自其中的某些值。如果您无法在任何配置文件中找到所需内容,或者甚至找不到这些文件,请将所有GIT_*环境变量视为最后的选择。
更多细节请查看:

http://git-scm.com/docs/git-config#FILES


1
在我的情况下,我在~/.git-credentials文件中找到了我的用户名。希望这能帮到你。 您还可以使用以下命令列出配置:
git config --list

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