如何防止在 gitconfig 文件中自动插入您的 Git 用户名和电子邮件地址?

如何防止在 gitconfig 文件中自动插入您的 Git 用户名和电子邮件地址?

我是 Linux 世界和 git 的新手。我最近通过创建一个名为“dotfiles”的 Git 存储库来设置版本控制来管理我的点文件。但是,每当我提交任何更改时,系统都会要求我提供 Git 用户名和密码,然后我的用户名和电子邮件地址会自动插入到.gitconfiguser部分下的文件中。目前,这很好,因为 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,如果不存在,则从环境变量中获取信息EMAIL,或者,如果未设置,则从系统用户名和用于传出的主机名中获取信息mail(/etc/mailname当该文件不存在时,从完全限定的主机名获取并回退到该主机名)。

author.name如果设置了和以及它们相应的电子邮件选项committer.name,则它们会覆盖 user.name 和 user.email,并且它们会被环境变量覆盖。

典型用法是仅设置user.nameuser.email变量;其他选项是为更复杂的用例提供的。

我通常会留下我的名字user.nameEMAIL在 shell 配置中进行适当的设置。请注意,某些程序(尤其是 Homebrew)已损坏并被EMAIL环境过滤,因此并非在所有情况下都有效。依赖系统 GECOS 字段和邮件设置是否正确并不是一个好主意,因为通常情况并非如此。

最后,请注意,您可以使用不同的配置文件,通常用于~/.config/git/config存储您不想存储在主文件中~/.gitconfig或签入到 dotfiles 存储库的值。我对诸如 之类的值执行此操作commit.gpgsign,因为并非我使用的所有系统都有我的私钥并且可以签署提交,因此我是否可以签名以及我使用什么密钥取决于系统。

相关内容