如何在Git中管理多个用户配置?

时间:2011-01-08 19:09:49

标签: git

我使用多个Git远程存储库,每个都需要不同的Git凭据(名称和邮件)。

是否有任何解决方案,如脚本或最佳实践如何管理它们?

我知道“config --local”,但我不想每次都手动设置这些变量。

2 个答案:

答案 0 :(得分:10)

看起来只是在特定存储库中说git config user.name(或user.email),而没有指定--global--system就可以了。默认设置是在当前存储库中设置配置,您必须为其提供显式选项,以便将其写入用户级或系统范围的配置。

如果您刚刚克隆需要不同配置的存储库,我不知道如何做到这一点。也许您可以编写一个小脚本来包装git clone来克隆某个存储库,然后根据任何信息设置适当的配置?如果您将脚本放在名为/usr/lib/git-core之类的git-nclone中,则可以将其作为git nclone运行。

编辑:由于您不想每次都手动设置它,如何克隆您实际使用的各种集合的克隆包装器,并允许您为要克隆的存储库选择适当的一个。它甚至可能具有基于您来自克隆的位置的智能默认值。

答案 1 :(得分:0)

我创建了几个看起来像这样的别名:

我的想法是可以在别名定义中保存我的凭据(电子邮件,用户名)。然后,当我想要克隆或初始化时,我不必每次都执行git config

初始化时:

initgithub = !git init && git config user.email [youremailfor@github.com] && git config user.name [yourgithubusername]

initbitbucket = !git init && git config user.email [youremailfor@bitbucket.com] && git config user.name [yourbitbucketusername]

克隆时:

clonegithub = "!f() { git clone $1 $2; cd $2; git config user.email [youremailfor@github.com]; git config user.name [yourgithubusername];  }; f"

clonebitbucket = "!f() { git clone $1 $2; cd $2; git config user.email [youremailfor@bitbucket.com]; git config user.name [yourbitbucketusername];  }; f"

ussage:

初始化时:

  

git initgithub

     

git initbitbucket

克隆时:

  

git clonegithub https://github.com/pathtoproject.git / c / temp / somefolder / project

     

git clonebitbucket https://github.com/pathtoproject.git / c / temp / somefolder / project

克隆时,您基本上可以创建一个将执行正常克隆操作和配置操作的函数。目前,它要求您提供要克隆的文件夹的路径,以便正确配置凭据。