如何在一臺電腦上管理/切換多個github賬戶

Ashin發表於2018-05-28

場景:比如個人person和公司work的多個github賬號,這個時候在本地做操作,是無法用work賬號操作person賬號下的git倉庫的。

當我用work提交屬於person的程式碼的時候,會出現以下報錯,提示無許可權。

$ 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地址

$ git remote -v
origin git@github.com:person/git-start.git (fetch)
origin git@github.com:person/git-start.git (push)

那麼,一臺電腦上如何管理多個github賬戶呢?

設定SSH金鑰

建立多個SSH金鑰,並儲存在對應的檔案中

cd ~/.ssh

ssh-keygen -t rsa -C “work@163.com”

ssh-keygen -t rsa -C “person@163.com”

以上建立出id_rsa_work, id_rsa_work.pub和id_rsa_person, id_rsa_person.pub四份檔案

將SSH金鑰新增到Github賬戶

將金鑰複製到剪下板

pbcopy < ~/.ssh/id_rsa_work.pub

將生成的金鑰中的公鑰內容(即.pub檔案)的內容新增到不同的github賬戶中,流程如下:

  • 轉到github的帳戶設定
  • 點選“SSH金鑰”,然後“新增SSH金鑰”
  • 將金鑰貼上到“金鑰”欄位並新增相關標題
  • 點選“新增金鑰”,然後輸入您的Github密碼進行確認

建立config配置檔案來單獨管理金鑰

$ 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賬戶的核心就是

  • ssh金鑰
  • config檔案配置
  • git倉庫遠端地址的配置

相關文章