我是 Linux 世界和 git 的新手。我最近通过创建一个名为“dotfiles”的 Git 存储库来设置版本控制来管理我的点文件。但是,每当我提交任何更改时,系统都会要求我提供 Git 用户名和密码,然后我的用户名和电子邮件地址会自动插入到.gitconfig
该user
部分下的文件中。目前,这很好,因为 Git 'dotfiles' 存储库是私有的,但将来,我可能会将此存储库公开。如果是这样,我不希望我的用户名和电子邮件地址显示在 中.gitconfig
。我该如何防止这种情况发生?
我注意到在马蒂亚斯·拜恩斯的.gitconfig
档案,没有user
部分,有以下commit
部分:
[commit]
# https://help.github.com/articles/signing-commits-using-gpg/
gpgsign = true
我还注意到,在安尼什·阿塔耶的.gitconfig
档案,没有任何commit
部分,但该user
部分包含以下内容:
[user]
useConfigOnly = true
答案1
Git 要求您提供姓名和电子邮件地址才能提交。这些值会插入到您所做的每次提交中,并且它们必须非空并满足一些基本验证。按照惯例,该名称是您的个人名称,但 Git 本身并不要求这样做,尽管您贡献的项目可能需要它。
~/.gitconfig
然而,话虽如此,您根本不必在 甚至任何配置文件中提供它们。 Git 首先会从环境变量GIT_AUTHOR_NAME
, GIT_AUTHOR_EMAIL
, GIT_COMMITTER_NAME
,中读取GIT_COMMITTER_EMAIL
它们是否存在。但是,通常这不是一个好主意,因为当您使用git commit --amend
, 并且您想使用另一种技术时,它会覆盖值。
git-commit(1)
解释其他选项:
如果未设置(某些)这些环境变量,则从配置项中获取信息
user.name
,或者user.email
,如果不存在,则从环境变量中获取信息/etc/mailname
当该文件不存在时,从完全限定的主机名获取并回退到该主机名)。
author.name
如果设置了和以及它们相应的电子邮件选项committer.name
,则它们会覆盖 user.name 和 user.email,并且它们会被环境变量覆盖。典型用法是仅设置
user.name
和user.email
变量;其他选项是为更复杂的用例提供的。
我通常会留下我的名字user.name
并EMAIL
在 shell 配置中进行适当的设置。请注意,某些程序(尤其是 Homebrew)已损坏并被EMAIL
环境过滤,因此并非在所有情况下都有效。依赖系统 GECOS 字段和邮件设置是否正确并不是一个好主意,因为通常情况并非如此。
最后,请注意,您可以使用不同的配置文件,通常用于~/.config/git/config
存储您不想存储在主文件中~/.gitconfig
或签入到 dotfiles 存储库的值。我对诸如 之类的值执行此操作commit.gpgsign
,因为并非我使用的所有系统都有我的私钥并且可以签署提交,因此我是否可以签名以及我使用什么密钥取决于系统。