为什么Git在没有配置时知道我的名字?

时间:2016-10-25 15:47:31

标签: git configuration username

我发现我没有在Git中配置user.name变量:git config user.name不打印任何内容(也包含--system--global--local)。

我的全名也不包含在env的输出中,只有我的登录名,这是不同的。

尽管如此,我的所有提交都归功于我真实的名字和姓氏。

Git是如何知道的?

澄清:

  • 我的全名包含在GIT_COMMITTER_IDENT命令显示的GIT_AUTHOR_IDENTgit var -l变量中。 (我想我的问题就是:它是如何实现的?)

  • 我说的是本地存储库。但是我在Github克隆的同一台计算机上有其他存储库。

  • 我正在使用Debian系统。

  • 我的全名包含在getent passwd

  • 的输出中

2 个答案:

答案 0 :(得分:2)

除非在Git配置或环境变量中指定,否则Git将尝试在密码文件中查找用户名。查找在fmt_ident函数中执行。

答案 1 :(得分:1)

可能是您设置了环境变量:

  

Git提交对象的最终创建通常由   git-commit-tree,,它使用这些环境变量作为主要变量   信息源,只有在符合要求时才回退到配置值   这些都不存在。

     

GIT_AUTHOR_NAME是“作者”字段中的人类可读名称。

     

GIT_AUTHOR_EMAIL是“作者”字段的电子邮件。

     

GIT_AUTHOR_DATE是用于“作者”字段的时间戳。

     

GIT_COMMITTER_NAME设置“提交者”字段的人名。

     

GIT_COMMITTER_EMAIL是“提交者”字段的电子邮件地址。

     

GIT_COMMITTER_DATE用于“提交者”字段中的时间戳。

     

EMAIL是user.email的后备电子邮件地址   配置值未设置。如果没有设置,Git会回归   系统用户名和主机名。

来源:https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables