gpt4 book ai didi

git - 如果未设置用户电子邮件,如何进行 git block 提交?

转载 作者:IT王子 更新时间:2023-10-29 01:27:23 26 4
gpt4 key购买 nike

我有不同的电子邮件地址用于工作项目和开源项目,我想确保我为每种类型的项目使用正确的地址。

显然,解决方案是适本地设置存储库特定的配置,不幸的是,我一直忘记设置它,直到我进行了几次提交,所以我使用全局 user.email 配置,如果它与什么匹配就可以了我正在努力,但在其他方面不太好。

如果 user.email 没有在任何地方设置,git 只会将本地用户名和主机拼在一起组成一个(对于台式机来说不是那么好);我希望它只是阻止提交。我不认为 Hook 会起作用,因为我希望这种情况发生在新的和克隆的存储库中 - 如果我手动将 Hook 复制到存储库中,我可能应该改为设置配置。

最佳答案

新更新(2016 年 2 月,针对 git 2.8)

git 2.8(2016 年 3 月)将添加一个新的解决方案:

参见 commit 4d5c295 (2016 年 2 月 6 日)作者:Dan Aloni (da-x) .
帮助:Eric Sunshine (sunshineco) .
参见 commit 59f9295 (2016 年 2 月 4 日)作者:Jeff King (peff) .
帮助:Eric Sunshine (sunshineco) .
(由 Junio C Hamano -- gitster -- merge 于 commit c37f9a1 ,2016 年 2 月 17 日)

ident: add user.useConfigOnly boolean for when ident shouldn't be guessed

It used to be that:

git config --global user.email "(none)"

was a viable way for people to force themselves to set user.email in each repository.
This was helpful for people with more than one email address, targeting different email addresses for different clones, as it barred git from creating a commit unless the user.email config was set in the per-repo config to the correct email address.

A recent change, 19ce497 (ident: keep a flag for bogus default_email, 2015-12-10 for git 2.6.5, Jan. 2016), however, declared that an explicitly configured user.email is not bogus, no matter what its value is, so this hack no longer works.

Provide the same functionality by adding a new configuration variable user.useConfigOnly; when this variable is set, the user must explicitly set user.email configuration.

所以从 2016 年 3 月和 git 2.8 开始,做:

git config --global user.useConfigOnly true

您的任何新存储库都将在其本地 .git/config 文件中查找 user.email
如果在本地 git 配置中找不到 user.email,提交将不会继续。


请注意,它将在 git 2.9(2016 年 6 月)中得到更多增强:

参见 commit d3c06c1 , commit 734c778 (2016 年 3 月 30 日)作者:Marios Titas (``) .
(由 Junio C Hamano -- gitster -- merge 于 commit e7e6826 ,2016 年 4 月 29 日)

ident: check for useConfigOnly before auto-detection of name/email

If user.useConfigOnly is set, it does not make sense to try to auto-detect the name and/or the email.
The auto-detection may even result in a bogus name and trigger an error message.

ident: give "please tell me" message upon useConfigOnly error

use a less descriptive error message to discourage users from disabling user.useConfigOnly configuration variable to work around this error condition. We want to encourage them to set user.name or user.email instead.

所以代替:

user.useConfigOnly set but no name given
user.useConfigOnly set but no mail given

你会看到:

no name was given and auto-detection is disabled
no email was given and auto-detection is disabled

原始答案(2012 年 9 月)

有点像“Stop a git commit by a specific author using pre-commit hook”,你可以定义一个default 预提交钩子(Hook)来检查:

 git config --local user.email

是否为空
如果为空:exit 1

要确保您为每个正在创建的存储库使用默认 Hook ,请参阅“change default git hooks”。
这是一种与“Share your git hooks”中描述的方法类似的方法:

关于git - 如果未设置用户电子邮件,如何进行 git block 提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12292582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com