我有一台工作计算机,它被全局配置为在提交时使用我的工作电子邮件和姓名。这很好。但是,我想制定一些规则,“如果 repo 来源是 github,则使用用户 X 和电子邮件 Y”
我意识到您可以为每个存储库创建一个配置条目,但我希望它更加自动化:如果克隆是 github,它应该使用 github 用户详细信息。如果我从工作中克隆,它应该使用工作详细信息。
有没有办法根据远程域全局配置这个?还是另一种方式?
编辑/更新
我接受了下面的答案,但稍微修改了脚本:
#!/usr/bin/env bash
# "Real" git is the second one returned by 'which'
REAL_GIT=$(which -a git | sed -n 2p)
# Does the remote "origin" point to GitHub?
if ("$REAL_GIT" remote -v 2>/dev/null | grep '^origin\b.*github.com.*(push)$' >/dev/null 2>&1); then
# Yes. Set username and email that you use on GitHub.
export GIT_AUTHOR_NAME=$("$REAL_GIT" config --global user.ghname)
export GIT_AUTHOR_EMAIL=$("$REAL_GIT" config --global user.ghemail)
fi
"$REAL_GIT" "$@"
主要添加是对两个git config
值的要求。
git config --global user.ghname "Your Name"
git config --global user.ghemail "you@yourmail.com"
这避免了对脚本中的值进行硬编码,从而使其更具可移植性。也许?