我使用多个Git远程存储库,每个都需要不同的Git凭据(名称和邮件)。
是否有任何解决方案,如脚本或最佳实践如何管理它们?
我知道“config --local”,但我不想每次都手动设置这些变量。
答案 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
克隆时,您基本上可以创建一个将执行正常克隆操作和配置操作的函数。目前,它要求您提供要克隆的文件夹的路径,以便正确配置凭据。