如何在命令行中指定git email地址?

时间:2013-06-18 16:41:59

标签: git

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

我想我可以创建一个'git config的脚本(而不是别名),但有更简单的方法吗?

5 个答案:

答案 0 :(得分: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补丁时),但只要你知道这一点,你就可以工作在它周围。

答案 1 :(得分:2)

转到您的仓库的根目录并编辑.git/config文件

您可以将此放在顶部

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

基本上,您要为repo分别设置这些凭据(而不是全局)

哈克

将此功能添加到您的.bashrc并在回购

上运行wgit
wgit() {
  echo "[user]" >> .git/config
  echo "    email = you@something.com" >> .git/config
  echo "    name  = Full Name" >> .git/config
}

答案 2 :(得分: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

答案 3 :(得分: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"

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

答案 4 :(得分:1)

$ git config --global user.email='my-personal-email-address'

$ cat stash
#!/bin/bash

git config user.email='my-company-email-address'
git "$@"
Emil的解决方案对我来说是最好的解决方案,但我会留下这个解决方案以防其他人喜欢它。