如何根据主机切换git email?

4ngedf3f  于 2022-12-21  发布在  Git
关注(0)|答案(2)|浏览(749)

我在三个不同的Git服务提供商- GitHub,GitLab和BitBucket都有账户。我想确保我的提交都是通过SSH签署的,但这是不可能的,因为我现在已经分配了一个GitLab邮箱,并且我所有的账户都使用唯一的电子邮件。这只会验证GitLab的已签名提交是否成功。我如何才能让GitHub/BitBucket存储库将被分配给各自的电子邮件?
没有在网上找到任何处理这个问题的方法。有一个“gitdir”方法,但我不想找这个。我希望Git知道我在使用什么主机(如果在GitHub上,使用abc@gmail.com,如果在GitLab上,使用pqr@outlook.com等等),并在此基础上分配电子邮件。

nqwrtyyt

nqwrtyyt1#

Git允许你通过以下命令为本地仓库克隆中的新提交设置默认邮件地址:

$ git config --local user.email "myemail@whereever.org"

因此,只要你的任何一个本地存储库只推送到一个给定的托管服务,那么你就应该能够为提交分配合适的电子邮件。
这回答了你的问题吗?

vyu0f0g1

vyu0f0g12#

不幸的是,Git config不直接支持条件,但包含其他配置文件。我可以通过使用hasconfig:remote.*.url condition for includeIf来解决我的问题。您可以删除[user] block下的email变量-这是您的全局email。创建三个相同的新块。下面是我的.gitconfig文件的示例:

.gitconfig

[user]
  name = <Your name>
  signingkey = ~/.ssh/id_ed25519.pub

[includeIf  "hasconfig:remote.*.url:git@github.com:**/**"]
  path = .github

[includeIf  "hasconfig:remote.*.url:git@gitlab.com:**/**"]
  path = .gitlab

[includeIf  "hasconfig:remote.*.url:git@bitbucket.org:**/**"]
  path = .bitbucket

[init]
  defaultBranch = main

[core]
  editor = vim 

[color]
  ui = auto

[gpg]
  format = ssh 

[commit]
  gpgsign = true

现在为各自的遥控器创建配置文件,我已经在.gitconfig所在的目录下创建了.github.gitlab.bitbucket

.github网站

[user]
  email = secret-email@github.com

.gitlab网站

[user]
  email = secret-email@gitlab.com

.位存储桶

[user]
  email = secret-email@bitbucket.com

相关问题