2016/04/24

GitHubで仕事用とプライベート用のアカウントを切り替えて使う

職場ではバージョン管理にGitHubを使用しているのだが、アカウント名がバレるのが嫌で別のアカウントを使っている。しかし、会社でお昼休みや休憩時間に個人の開発を行うときに困ったことが起きた。

会社のPCからgit pushすると、仕事用アカウントとしてpushされてしまうのだ。


ということで、仕事用とプライベート用のアカウントを切り替えて使う方法を調べた。

環境は以下のとおり。
OSXを使用しているが、Windowsでの操作もほぼ変わらないだろう。

  • Mac OSX Yosemite
  • git v2.5.4

※ Windowsの場合は、Git for Windowsをインストールし、Git Bashを使うと便利



1. ssh-keygenで公開鍵/秘密鍵を作成する


GitHubでは同じ公開鍵を複数のアカウントに登録することができない。
そのため、プライベート用の秘密鍵/公開鍵を作成する。

$ ssh-keygen -t rsa -f github-private

OSXの場合は「~/.ssh」ディレクトリに作成される。
Windowsの場合は「c:/User/{ユーザ名}/.ssh」ディレクトリに作成される。

秘密鍵は「github-private」、公開鍵は「github-private.pub」となっていると思う。



2. .ssh/configを修正する


「~/.ssh/config」ファイルを修正して、ホストごとに秘密鍵を使い分けるようにする。

$ vim ~/.ssh/config
-------------------------
# 仕事用
Host github.com
  User git
  Port 22
  HostName github.com
  IdentityFile ~/.ssh/id_rsa   ← ここに仕事用の秘密鍵を設定
  TCPKeepAlive yes
  IdentitiesOnly yes
# プライベート
Host github_private
  User git
  HostName github.com
  IdentityFile ~/.ssh/github_private ← ここにプライベート用の秘密鍵を設定
  TCPKeepAlive yes
  IdentitiesOnly yes

Windowsの場合は、お手持ちのエディタ(メモ帳でもOK)で編集する。
Hostに「github.com」を使ったリポジトリは仕事用、「github_private」を使ったリポジトリはプライベートになる。



3. 公開鍵をGitHubに登録する




4. プライベート用アカウントを設定する


$ cd {開発用ディレクトリ}
$ git clone git@github_private:{ユーザ名}/{リポジトリ名}.git


「git@{ホスト名} 」のホスト名に「2. .ssh/configを修正する」で設定したプライベート用ホスト(ここではgithub_private)に変更する。


次にgitconfigを設定する。
$ git config user.name "{プライベート用ユーザ名}"
$ git config user.email "{プライベート用メールアドレス}"

ここでは「--global」を付けないこと!
上記コマンドを実行すると以下のようになるはずだ。

$ less ./.git/config
------------------
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
[remote "origin"]
        url = git@github-private:BcRikko/repo.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[user]
        name = bc_rikko  ←プライベート用ユーザ名
        email = hoge@example.com  ← プライベート用メールアドレス

あとは、いつもどおりGitHubにpushするだけで大丈夫。



参考サイト





written by @bc_rikko

以上

0 件のコメント :

コメントを投稿