Posted at

githubの複数アカウントの扱い方

More than 3 years have passed since last update.

githubのアカウントを複数持っていて、意図と違うアカウントにpushされちゃってpermission deniedとかになって地味に解消するのに手間取ったので、今後そうならないようにメモっておきます。


陥った現象

個人のアカウントとチームのアカウントを二つ持っていて、とあるアプリケーションをlocalで開発後、githubの個人アカウントにpushしようと思ったら、チームの方にpushされてpermission deniedとかになってしまってpushができない。。。

~/.ssh/configとかAPP_ROOT/.git/configとかを色々いじってみて、ようやく解消したので、そのプロセスをメモしておきます。

githubにsshで接続するために下記を実行

ssh -T git@github.com

すると、認証が完了したときのメッセージが、

Hi {チームのアカウント名}/{APP名}! You've successfully authenticated, but GitHub does not provide shell access.

ここで気づくべきだけど、認証した!と思って、意気揚々とgit pushまでしようとすると、push先がチームのアカウントなのでpermissionがないよと。


対処法

git remoteの先を確認。

git remote -v

=> origin git@github.com:{個人のアカウント名}/{APP名}.git (fetch)
origin git@github.com:{個人のアカウント名}/{APP名}.git (push)

となる。

さっき接続したgithub.comでは、チームのアカウントがpush先になってしまうので、

remoteを書き換える。

vi ~/.ssh/config

に以下の記述を追加する

Host github-mine

HostName github.com
User git
Port 22
TCPKeepAlive yes
IdentitiesOnly yes
IdentityFile ~/.ssh/{秘密鍵の名前}

で、

git remote remove origin

git remote add origin git@github-mine:{個人のアカウント名}/{APP名}.git

とやると、

git remote -v

=> origin git@github-mine:{個人のアカウント名}/{APP名}.git (fetch)
origin git@github-mine:{個人のアカウント名}/{APP名}.git (push)

ってなるので、これでOK!!

git pushが通りましたとさ。

めでたし、めでたし。