4

我正在使用两个不同的 Git 存储库(即 github 和 stash),并且我想为每个存储库使用不同的电子邮件地址。我知道我可以使用git config,但我不想每次创建新工作区时都必须记住这样做。所以,我想创建一个别名来在命令行上设置电子邮件地址。这可以做到吗?

我想我可以创建一个脚本(而不是别名)git config,但是有没有更简单的方法来做到这一点?

4

5 回答 5

4

您可以使用以下(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 "$@"
}

然后你可以打电话workgithomegit代替git强制给定的用户名/电子邮件。

这不是一个理想的解决方案(因为有时您只想成为提交者而不是作者,例如当您正在修改基础或 git am'ing 补丁时)但只要您意识到这一点,您就可以解决它。

于 2013-06-18T17:27:39.473 回答
2

转到 repo 的根目录并编辑.git/config文件

在这里你可以把它放在上面

[user]
    email                   = you@something.com
    name                    = Full Name

本质上,您正在为 repo 单独设置这些凭据(而不是全局)

哈克

将此功能添加到您的.bashrcwgit在 repo 上运行

wgit() {
  echo "[user]" >> .git/config
  echo "    email = you@something.com" >> .git/config
  echo "    name  = Full Name" >> .git/config
}
于 2013-06-18T16:56:57.997 回答
1

如果您使用它运行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
于 2013-06-18T16:43:12.483 回答
1

您可以使用一个小的 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"

我知道我有点晚了,但写它花了一些时间......

于 2013-06-18T17:21:17.883 回答
1
$ git config --global user.email='my-personal-email-address'

$ cat stash
#!/bin/bash

git config user.email='my-company-email-address'
git "$@"

Emil 的解决方案对我来说是最好的解决方案,但我会留下这个,以防其他人更喜欢它。

于 2013-06-18T17:26:24.393 回答