Create a gist now

Instantly share code, notes, and snippets.

@suziewong /git.md
Last active Apr 20, 2018

What would you like to do?
Git的多账号如何处理? 1.同一台电脑多个git(不同网站的)账号 2.同一台电脑多个git(同一个网站的比如github的)多个账号

1.同一台电脑可以有2个git账号(不同网站的)

首先不同网站,当然可以使用同一个邮箱,比如我的github,gitlab,bitbucket的账号都是monkeysuzie[at]gmail.com 这时候不用担心密钥的问题,因为这些网站push pull 认证的唯一性的是邮箱 比如我的windows 上 2个账号一个gitlab 一个github (用的都是id_rsa)

host github
  hostname github.com
  Port 22
host gitlab.zjut.com
  hostname gitlab.zjut.com
  Port 65095

不需要指定key的位置。因为默认读取id_rsa了

这样子使用起来没有任何区别,remote 也想平时一样操作即可。因为邮箱是相同的。

2.同一台电脑有2个github账号?咋办

比如我服务器上模拟的2个用户

#monkeysuzie@gmail.com   我在gitlab的第一个账号suzie
host gitlab.zjut.com
    hostname gitlab.zjut.com
    Port 65095
    User suzie
    IdentityFile /home/suzie/.ssh/id_rsa
#  我在gitlab的第2个账号test
host gitlab-test.zjut.com
    hostname gitlab.zjut.com
    Port 65095
    User test
    IdentityFile /home/suzie/.ssh/id_rsa_second
#837368104@qq.com 我在github的账号 
host github-osteach.com
    hostname github.com
    Port 22
    User osteach
    IdentityFile /home/suzie/.ssh/id_rsa_second

这种情况下,需要几点注意

1.remote pull push的时候有问题,因为要设置邮箱问题了 pull的时候识别的是邮箱,2个github账号,2个邮箱,我们自然不能使用global的user.email了

1.取消global
git config --global --unset user.name
git config --global --unset user.email

2.设置每个项目repo的自己的user.email
git config  user.email "xxxx@xx.com"
git config  user.name "suzie"

之后push pull就木有问题了

备注

生成ssh key

ssh-keygen -m rsa -C "your mail" (当前目录) 然后可以命名默认id_rsa 或者id_rsa_second 把对应的pub放到公共服务器上。

@zarzen

This comment has been minimized.

Show comment Hide comment
@zarzen

zarzen Jan 26, 2013

good job

zarzen commented Jan 26, 2013

good job

@jiyinyiyong

This comment has been minimized.

Show comment Hide comment
@jiyinyiyong

jiyinyiyong Nov 8, 2013

我的 Google 搜索结果第一条...

我的 Google 搜索结果第一条...

@tonyc726

This comment has been minimized.

Show comment Hide comment
@tonyc726

tonyc726 Jan 7, 2014

@suziewong 我也按照你的经行了设置

# ~/.gitconfig

host = test-github
    hostname = github.com
    Port = 666333
    identityfile = ~/.ssh/github-shell

但是使用

ssh -T  test-github

会报错,不知道你有没有遇到过这种问题?

tonyc726 commented Jan 7, 2014

@suziewong 我也按照你的经行了设置

# ~/.gitconfig

host = test-github
    hostname = github.com
    Port = 666333
    identityfile = ~/.ssh/github-shell

但是使用

ssh -T  test-github

会报错,不知道你有没有遇到过这种问题?

@iqiancheng

This comment has been minimized.

Show comment Hide comment
@iqiancheng

iqiancheng Apr 8, 2015

使用

ssh -vT git@github.com 

可以查看ssh 连接主机的debug信息。

使用

ssh -vT git@github.com 

可以查看ssh 连接主机的debug信息。

@ladder1984

This comment has been minimized.

Show comment Hide comment
@ladder1984

ladder1984 Aug 4, 2015

呃,这个文件放在哪里?

呃,这个文件放在哪里?

@hzchenyh

This comment has been minimized.

Show comment Hide comment
@hzchenyh

hzchenyh Feb 25, 2016

看来还是工大的校友嘛 哈哈

看来还是工大的校友嘛 哈哈

@huguangju

This comment has been minimized.

Show comment Hide comment
@huguangju

huguangju Mar 14, 2016

+1

+1

@hzxd

This comment has been minimized.

Show comment Hide comment
@hzxd

hzxd Mar 21, 2016

现在还是google第一

hzxd commented Mar 21, 2016

现在还是google第一

@qiuchengjia

This comment has been minimized.

Show comment Hide comment
@qiuchengjia

qiuchengjia Jun 27, 2016

我这样不行啊

我这样不行啊

@ChrisCindy

This comment has been minimized.

Show comment Hide comment
@ChrisCindy

ChrisCindy Jun 30, 2016

mac上的文件地址是/etc/ssh/ssh_config

mac上的文件地址是/etc/ssh/ssh_config

@cxiaoer

This comment has been minimized.

Show comment Hide comment
@cxiaoer

cxiaoer Jul 27, 2016

多谢了

cxiaoer commented Jul 27, 2016

多谢了

@Mark-Han

This comment has been minimized.

Show comment Hide comment
@Mark-Han

Mark-Han Oct 30, 2016

It works.

It works.

@iewgnahz

This comment has been minimized.

Show comment Hide comment
@iewgnahz

iewgnahz Dec 4, 2016

为什么我测试的结果两次用户名都是相同的都是:hi zhangwei

iewgnahz commented Dec 4, 2016

为什么我测试的结果两次用户名都是相同的都是:hi zhangwei

@TabSh

This comment has been minimized.

Show comment Hide comment
@TabSh

TabSh Dec 28, 2016

使用global的用户一样是可以的,前提是在目标里添加了ssh

TabSh commented Dec 28, 2016

使用global的用户一样是可以的,前提是在目标里添加了ssh

@Irischen666

This comment has been minimized.

Show comment Hide comment
@Irischen666

Irischen666 Jun 16, 2017

我按照你的方法尝试了,还是提示permission denied 。于是,到mac的钥匙串里面,把所有跟git 相关的密码删除。重新push的时候,会提示输入用户名和邮箱密码,输入之后就好了。

我按照你的方法尝试了,还是提示permission denied 。于是,到mac的钥匙串里面,把所有跟git 相关的密码删除。重新push的时候,会提示输入用户名和邮箱密码,输入之后就好了。

@dousuguang

This comment has been minimized.

Show comment Hide comment
@dousuguang

dousuguang Jun 22, 2017

我在mac上切换github账户时,当目标是http地址时,也需要删除keychain access里面和github有关的密码,如果把目标换成ssh地址,并且设置好ssh钥匙,应该就会自动登陆了,等会儿试验了再来汇报。

我在mac上切换github账户时,当目标是http地址时,也需要删除keychain access里面和github有关的密码,如果把目标换成ssh地址,并且设置好ssh钥匙,应该就会自动登陆了,等会儿试验了再来汇报。

@r888800009

This comment has been minimized.

Show comment Hide comment
@r888800009

r888800009 Mar 17, 2018

如果使用windows版本的git,則修改到這個檔案。
C:\Program Files\Git\etc\ssh\ssh_config
如果在安裝的時候,有修改過安裝路徑則自行調整至git的安裝路徑。

註:windows版本的git安裝目錄類似linux上的根目錄,透過修改ssh_config達成配置的效果。

r888800009 commented Mar 17, 2018

如果使用windows版本的git,則修改到這個檔案。
C:\Program Files\Git\etc\ssh\ssh_config
如果在安裝的時候,有修改過安裝路徑則自行調整至git的安裝路徑。

註:windows版本的git安裝目錄類似linux上的根目錄,透過修改ssh_config達成配置的效果。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment