假设我是一名承包商,偶尔会同时从事两个项目(一个可能是维护项目,一个可能是开发项目)
有时我必须在新的存储库上工作,但忘记设置要在 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