場景:好比我的person和公司work的多個github帳號,這個時候在本地作操做,是沒法用work帳號操做person帳號下的git倉庫的。git
當我用work提交屬於person的代碼的時候,會出現如下報錯,提示無權限。github
$ git push origin master
ERROR: Permission to person/git-start.git denied to work.
fatal: Could not read from remote repository.
使用git remote -v
可查看當前倉庫的遠程git地址shell
$ git remote -v
origin git@github.com:person/git-start.git (fetch)
origin git@github.com:person/git-start.git (push)
那麼,一臺電腦上如何管理多個github帳戶呢?vim
建立多個SSH密鑰,並保存在對應的文件中ssh
cd ~/.sshssh-keygen -t rsa -C "work@163.com"ide
ssh-keygen -t rsa -C "person@163.com"測試
...fetch
以上建立出id_rsa_work, id_rsa_work.pub和id_rsa_person, id_rsa_person.pub四份文件加密
將密鑰複製到剪切板url
pbcopy < ~/.ssh/id_rsa_work.pub
將生成的密鑰中的公鑰內容(即.pub文件)的內容添加到不一樣的github帳戶中,流程以下:
$ cd ~/.ssh/$ sudo vim config
編輯config文件
# work Host work HostName github.com User git IdentityFile ~/.ssh/id_rsa_work # person Host person HostName github.com User git IdentityFile ~/.ssh/id_rsa_person
添加新的密鑰
$ ssh-add id_rsa_work $ ssh-add id_rsa_person
查看當前的密鑰列表,查看是否添加成功
$ ssh-add -l
測試以確保Github識別密鑰:
$ ssh -T work Hi work! You've successfully authenticated, but GitHub does not provide shell access. $ ssh -T person Hi person! You've successfully authenticated, but GitHub does not provide shell access.
在和遠程庫交互的時候,還有一點要注意,即git倉庫地址的更改。
首先,回到命令行上,建立一個測試目錄:
$ cd ~/documents $ mkdir git-start $ cd git-start
使用work帳號,向Github添加一個空白的「readme.md」文件和PUSH:
$ touch readme.md $ git init $ git add . $ git commit -am "first commit" $ git remote add origin git@work:work/git-start.git $ git push origin master
注意咱們如何使用自定義賬戶git@work
,而不是git@github.com
!
對於git@work:work/git-start.git。第一個work是在config文件裏建立的Host,第二個work爲你github的用戶名。
再試一下person的PUSH和PULL操做,看是否成功
tips,更改遠程倉庫的命令
$ git remote set-url origin git@work:work/git-start.git
總結,一臺計算機上管理多個github帳戶的核心就是