前言
最近工作上遇到了使用git+repo的情况,需要用公司的邮箱和域账号名重新申请git账号,而我本身在github上也有一些开源项目,这里就是记录一下我是如何实现git多账号登陆问题
取消git全局设置
很多同学照着网上的教程,都会对git进行全局设置,例如:
1
2
3
|
<a href=
"http://so.21ops.com/cse/search?s=9181936462520079739&entry=1&q=git"
class=
"bdcs-inlinelink"
target=
"_blank"
>git<
/a
> config --global user.name
"your_name"
git config --global user.email
"your_email"
|
如果你多参与的项目都允许你用同一个用户名和邮箱,这样设置当然没问题,但是,一旦你进入公司,估计是没有自主选择权利的,公司都会配置相应的域账号和邮箱,因此我们首先需要取消git的全局设置
1
2
|
git config --global --
unset
user.name
git config --global --
unset
user.email
|
针对每个项目,单独设置用户名和邮箱,设置方法如下:
1
2
3
4
5
|
mkdir
~
/test
//
git检出目录
cd
~
/test
git init
git config user.name
"your_name"
git config user.email
"your_email"
|
说白了,也就是进入到你的git项目相对根目录下,然后执行git config设置记录
SSH配置
我看了很多中文博客,发现讲的都不太清楚,还是在stackoverflow上,找了一个问题解决我的疑惑:http://stackoverflow.com/questions/14689788/multiple-github-accounts-what-values-for-host-in-ssh-config
解决方法总结如下:
(1) 我现在有两个git项目,使用的用户名分别是A/B,用的邮箱分别是C/D
(2) 在~/.ssh目录下,使用 ssh-keygen -C "your_email" -t rsa 生成公私秘钥,命名分别为 id_rsa_first, id_rsa_second,公钥的内容需要分别上传到git项目的服务器上
(3) 在~/.ssh目录下创建config文件,进行相应配置:
1
2
3
4
5
6
7
8
9
10
11
12
|
#第一个git项目账号
Host first
HostName
test
.com
#这里需要用真实的项目检出hostname,为了项目安全,我这里随意写的
User A
IdentityFile ~/.
ssh
/id_rsa_first
#第二个git项目账号
Host second
HostName test2.com
Port 1334
User B
IdentityFile ~/.
ssh
/id_rsa_second
|
(4) 新建git项目检出目录,我发现很多同学出问题,在于git项目没有初始化
1
2
3
4
|
mkdir
project &&
cd
project
git init
git config user.name
"A"
git config user.email
"C"
|
相应的第二个项目也参照上面的指令进行初始化设置
(5)检出服务端项目代码,这里需要注意,使用.ssh目录下的host代替真实的hostname,这样才能让git识别出来
1
|
git remote add first git@first:A
/project
.git
|
如果使用的是repo,也是同样操作
1
|
repo init -u
ssh
:
//A
@first -b branch
|
(6)push的时候,push到对应的Host即可
1
|
first项目中: git push fist master
|