在我的个人机器上,我在全局git配置中设置了我的个人电子邮件地址。
$ git config --global --get user.email
[email protected]
但是,我也检查了我公司的代码,因此,我需要用我公司的电子邮件地址配置git。
$ cd corp/project
$ git config --local --get user.email
[email protected]
然而,有时候,当克隆一个repo时,我忘记覆盖我的电子邮件地址,所以我使用我的个人电子邮件地址提交。
可以删除我的全局git配置,从而防止我在本地git配置中设置user.email
之前在任何repo中提交。
这有点像pita,在理想的情况下,我可以设置一个分层的git配置,以便某个子目录下的repos(或其他确定哪个配置适用的方法)使用其中最具体的设置。
类似于以下内容:
~/
|
+--- .gitconfig # sets personal email address
|
+--- src/
|
+--- project/ # ~/.gitconfig email address applies
|
+--- corp/
|
+--- .git/config # sets corp email address
|
+--- project/ # corp/.git/config email address applies
AFAIK目前这在git中是不可能的,它需要一个新的配置级别,位于全局和本地之间
有没有办法让我达到我在这里寻找的东西?
5条答案
按热度按时间gtlvzcf81#
由Orr Sella在git hooks上 checkout this great post,专门用于电子邮件使用。他完全放弃了全局配置,并使用钩子来防止没有可用配置的克隆:
使用这个的方法是在邮件中。您可以改进此方法,在存储库根目录中查找本地配置,检查电子邮件(甚至使用grep),如果不存在,则使用全局配置。事
GIT_DIR在钩子运行时保证是仓库根目录。
shyt4zoc2#
AFAIK git本身只支持per-repo和全局身份。
我通过在
zsh
中使用cd钩子来归档类似的东西:icnyk63a3#
你的假设是正确的,这是不原生支持由git的时刻。1(https://git-scm.com/book/tr/v2/Customizing-Git-Git-Configuration)
我认为最简单的解决方法是编写一个脚本来创建/克隆存储库。然后你可以设置一个(git)别名(例如
git myinit
|git myclone
),询问您该项目是否为个人项目,并相应地设置电子邮件地址。z8dt9xmd4#
你可以使用git hooks:pre-commit检查你的本地配置并抛出错误。
abithluo5#
目前还不支持,但是从git 2.8(Mar '16)开始,你可以禁用全局用户配置,如下所示:
这样git就永远不会让你提交,直到你在本地配置中设置一个电子邮件。你可以想一个脚本来获取你的全局设置,并复制到本地配置一个快速的解决方案。