26
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

GitHubを複数のアカウントで利用するためのメモ

はじめに

GitHubをプライベートでも、仕事でも使用している場合、アカウントが複数になってしまうことがあるかと思います。そのような場合の設定を忘備録としてまとめてみました。

~/.sshのファイル構成

~/.sshは下記のような構成にします。ファイル名は公開鍵・秘密鍵を作ってしまったあと、適当に変えても問題ありません。

.ssh/
├── config
├── id_private_rsa
├── id_private_rsa.pub
├── id_work_rsa
├── id_work_rsa.pub
└── known_hosts

id_private_rsa、id_private_rsa.pubはプライベート用で、id_work_rsa、id_work_rsa.pubは仕事用の公開鍵・秘密鍵です。

プライベート用・仕事用それぞれの秘密鍵の呼び出し方がconfigファイルに記載されています。

公開鍵・秘密鍵の生成については、こちらの記事などを参考にして下さい(GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~)

GitHubには公開鍵であるxxxx.pubの内容をアップロードします。秘密鍵であるid_private_rsaid_work_rsaは原則誰にも見られないように秘匿します。

configファイルの内容

Host github-private
  User git
  Port 22
  HostName github.com
  IdentityFile ~/.ssh/id_private_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes
  UseKeychain yes
  AddKeysToAgent yes

Host github-work
  User git
  Port 22
  HostName github.com
  IdentityFile ~/.ssh/id_work_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes
  UseKeychain yes
  AddKeysToAgent yes

Host GitHub-privateHost GitHub-work で定義した内容でプライベート用・仕事用の秘密鍵を利用することができます。

詳細についてはこちらの記事などを参考にして下さい ( .ssh/configファイルでSSH接続を管理する)

プライベート用のGitHubに接続する場合はこちらです。

git@github-private:"PRIVATE_ACCOUNT"/"REPOSITORY"

仕事用のGitHubに接続する場合はこちらです。

git@github-work:"WORK_ACCOUNT"/"REPOSITORY"

コミットした作者名とメールアドレスを切り替える

GitHubではコミットした作者の名前とメールアドレスが記録されます。当然プライベート用・仕事用で切り替えたいので、下記のようにします。

まず通常のgit操作で(例外を設定なければ)記録される作者名とメールアドレスは下記のように --globalオプションをつかって、~/.gitconfigに設定します。

$ git config --global user.name "NAME"
$ git config --global user.email "EMAIL"

~/.gitconfigを見ると下記のようになっています。

[user]
    name = "NAME"
    email = "EMAIL"

しかしながら、上記以外の作者名とメールアドレスを記録したい場合(例えば--globalで会社向けにした場合にプライベート用の作者名とメールアドレスを使いたい場合)それぞれのリポジトリーに移動して、 --localオプションを使って設定します。

$ git config --local user.name "NAME"
$ git config --local user.email "EMAIL"

上記のコマンドを実行した結果、それぞれのリポジトリーの下の /.git/config ファイルに --globalと同じく

[user]
    name = "NAME"
    email = "EMAIL"

が書き込まれます。

Sourcetreeを使う場合の注意

sorcetree.png

GitHubの操作にコマンドラインではなく、 Sourcetree などのGUIツールを使っている方もいると思います。
Sourcetreeは --global オプションで設定した作者名とメールアドレスを上書きしてしまう機能があるので注意が必要です。(configファイルを書き換えるわけではなく、Sourcetreeが無視するという動作になります)

「環境設定」メニュー、「一般」タブの上部にある「SourcetreeにMercurialとGitのグローバル設定ファイルの変更を許可する」がチェックされていると上書きされてしまいます。

ただし、これは--globalのみで、--localオプションで設定したリポジトリー毎の作者名とメールアドレスは変更されません。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
26
Help us understand the problem. What are the problem?