我正在使用两个不同的 Git 存储库(即 github 和 stash),并且我想为每个存储库使用不同的电子邮件地址。我知道我可以使用git config
,但我不想每次创建新工作区时都必须记住这样做。所以,我想创建一个别名来在命令行上设置电子邮件地址。这可以做到吗?
我想我可以创建一个脚本(而不是别名)git config
,但是有没有更简单的方法来做到这一点?
我正在使用两个不同的 Git 存储库(即 github 和 stash),并且我想为每个存储库使用不同的电子邮件地址。我知道我可以使用git config
,但我不想每次创建新工作区时都必须记住这样做。所以,我想创建一个别名来在命令行上设置电子邮件地址。这可以做到吗?
我想我可以创建一个脚本(而不是别名)git config
,但是有没有更简单的方法来做到这一点?
您可以使用以下(bash 风格)函数:
workgit () {
GIT_COMMITTER_NAME="Work Name" GIT_COMMITTER_EMAIL="work@work.com" GIT_AUTHOR_NAME="Work Name" GIT_AUTHOR_EMAIL="work@work.com" git "$@"
}
homegit () {
GIT_COMMITTER_NAME="Home Name" GIT_COMMITTER_EMAIL="home@home.com" GIT_AUTHOR_NAME="Home Name" GIT_AUTHOR_EMAIL="home@home.com" git "$@"
}
然后你可以打电话workgit
或homegit
代替git
强制给定的用户名/电子邮件。
这不是一个理想的解决方案(因为有时您只想成为提交者而不是作者,例如当您正在修改基础或 git am'ing 补丁时)但只要您意识到这一点,您就可以解决它。
转到 repo 的根目录并编辑.git/config
文件
在这里你可以把它放在上面
[user]
email = you@something.com
name = Full Name
本质上,您正在为 repo 单独设置这些凭据(而不是全局)
哈克
将此功能添加到您的.bashrc
并wgit
在 repo 上运行
wgit() {
echo "[user]" >> .git/config
echo " email = you@something.com" >> .git/config
echo " name = Full Name" >> .git/config
}
如果您使用它运行git config
,--global
它会为您的用户在整个系统中保存。如果没有该标志,它只会保存当前存储库的设置。存储库设置会覆盖系统设置。
或者,如果您想避免每次克隆时都输入,您可以简单地将克隆包装在脚本中并调用该脚本。
#!/bin/sh
USERNAME="My Name"
EMAIL="myemail@example.com"
git clone $1 $2
cd $2
git config user.email $USERNAME
git config user.name $EMAIL
cd -
在脚本中设置您的用户名和电子邮件并像这样运行,它将存储库克隆到一个名为my_folder
.
./clone.sh https://github.com/libgit2/libgit2.git my_folder
您可以使用一个小的 shell 脚本来初始化您的存储库。像这样:
#!/bin/sh
git init
if [ "$1" = 'g' ];
then
git config user.email <Github email>
fi
if [ "$1" = 's' ];
then
git config user.email <Stash email>
fi
email=$(git config user.email)
echo "Created repository with $email"
我知道我有点晚了,但写它花了一些时间......
$ git config --global user.email='my-personal-email-address'
$ cat stash
#!/bin/bash
git config user.email='my-company-email-address'
git "$@"
Emil 的解决方案对我来说是最好的解决方案,但我会留下这个,以防其他人更喜欢它。