如果未在 repo 配置中设置,我该如何强制 git 提示我输入要使用的电子邮件地址?

如果未在 repo 配置中设置,我该如何强制 git 提示我输入要使用的电子邮件地址?

假设我是一名承包商,偶尔会同时从事两个项目(一个可能是维护项目,一个可能是开发项目)

有时我必须在新的存储库上工作,但忘记设置要在 git 中使用的电子邮件地址,因此它默认为全局设置的电子邮件地址。

我怎样才能更好地处理这个问题?

如果我仅在 repo 级别定义电子邮件地址,会发生什么情况?git 会抱怨吗?还是会在没有定义电子邮件地址的情况下愉快地提交?

我怎样才能在检查一个全新的 repo 时提示我输入电子邮件地址?

它是否可以提示输入两个不同公司的“配置文件”之一?

我很容易在几个月内反复犯这个错误,所以我经常会忘记必须在新机器上设置的东西,或者需要运行的命令而不是默认的 git 命令。

当我在家工作时,这也偶尔会影响到我。

答案1

一种方法是取消设置本地 user.email 并启用 user.useConfigOnly 选项。此选项可用从 git 2.8 开始

git config --global --unset-all user.email
git config --global --add user.useConfigOnly true

此配置是针对每台计算机的,因此您需要在要克隆的每台计算机上进行设置。

设置此项后,提交将失败,因为您的电子邮件未设置且自动检测被禁用。

$ git commit -m "Test"
fatal: no email was given and auto-detection is disabled

然后对于每个新的存储库,在本地配置您的电子邮件地址:

git config --local --add user.email "[email protected]"

答案2

结合@NightSicarius 的回答,可以在 git 配置中使用“条件包含”。

来自评论https://collectiveidea.com/blog/archives/2016/04/04/multiple-personalities-in-git

现在,由于 Git v2.13 中增加了条件包含,因此这变得更加容易。您可以使用您提到的相同文件夹结构/.gitemail 文件,但从上到下引用它们,而不是相对引用它们。

如果包含条件以尾随“/”结尾,则路径将递归匹配到所有子目录,从而使整个结构正常工作。

[includeIf “gitdir:C:/Apache2.2/htdocs/jm/”] 路径 = C:/Apache2.2/htdocs/jm/.gitconfig

更多信息请访问: https://git-scm.com/docs/git-config#_conditional_includes

例如:https://stackoverflow.com/a/43884702/6798110

相关内容