我正在使用两个不同的Git存储库(即github和stash),并且每个我想使用不同的电子邮件地址。我知道我可以使用git config
但我不想记得每次创建新工作区时都这样做。所以,我想创建一个在命令行上设置电子邮件地址的别名。可以这样做吗?
我想我可以创建一个'git config
的脚本(而不是别名),但有更简单的方法吗?
答案 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 "$@"
}
然后,您只需拨打workgit
或homegit
代替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的解决方案对我来说是最好的解决方案,但我会留下这个解决方案以防其他人喜欢它。