GitHubとGitLabのアカウントを使い分け

GitHubとGitLabのどちらのアカウントを持っている場合、分けて管理したいことがあります。

今回の記事では、GitHubとGitLabのアカウントを別々に利用する際の具体的な手順をまとめました。

基本的には、以前の記事と同様の方法となっています。

あわせて読みたい
GitHubの複数アカウントを使い分ける GitHubで個人開発用のアカウントとは別に仕事用などのアカウントを利用する際の具体的な手順をまとめました。 環境 MacOS $ sw_vers ProductName: Mac OS X ProductVers...
目次

ディレクトリ構成

以下のようなディレクトリ構成でGitHubとGitLabのアカウントを分けてリポジトリの管理を行います。

~/
├── .gitconfig
├── github/
    ├── .gitconfig
    ├── githubのリポジトリ1
    ├── githubのリポジトリ2
    ├── ...
    └── githubのリポジトリN
└── gitlab/
    ├── .gitconfig
    ├── gitlabのリポジトリ1
    ├── gitlabのリポジトリ2
    ├── ...
    └── gitlabのリポジトリN

sshの設定

まずsshキーを複数用意し、それぞれのGitHubのアカウントに設定します。以下のコマンドでGitHub用のsshキーを作成します。

$ mkdir ~/.ssh(必要であれば)
$ cd ~/.ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):github_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

1回目に聞かれた時点でキーの名前(ここではgit_private_rsa)を指定。
その後、2回エンターを押すとgithub_rsa_rsaとgithub_rsa_rsa.pubが生成されます。このキーをGitHubに使用します。

さらに、もう一度以下のコマンドでGitLab用のsshキーを作成します。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):gitlab_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

今回はgitlab_rsaという名前を指定します。このキーをGitLabに使用します。

これらの生成したsshキーをGitHubで公開の設定を行います。
その際に、鍵の中身をクリップボードにコピーするのは以下のコマンドで行います。

$ pbcopy < ~/.ssh/keyname.pub (Mac)
$ clip < ~/.ssh/keyname.pub (Windows)

GitHubのsshキーの登録

Githubにログインし、右上のアイコンからSettingsを選択します。

SSH and GPG keys > New SSH Keyから以下のようなSSHキーの登録画面に移ります。

Titileに任意の文字列を入力します。

Keyに先ほどコピーしたGithub用の(github_rsa.pub)値を貼り付けます。

GitLabのsshキーの登録

GitLabにログインし、右上のアイコンからEdit Profileを選択します。

SSH Keysを選択すると、以下の画面に遷移します。

Keyに先ほど取得したGitLab用の値(gitlab_rsa.pub)を貼り付けます。

Titleに任意の文字列を入力します。

Expires atはキーの期限を表しており、入力した場合はその期間まで有効となります。

未入力の場合、GitLab側で永続的にキーが有効となります。

GitHubとGitLabの使い分け

次に、sshの設定を行います。~/.ssh/configファイルを作成し、sshの設定を行います。

Host github # GitHubの設定
    User git
    HostName github.com
    IdentityFile ~/.ssh/github_rsa
    IdentitiesOnly yes
    AddKeysToAgent yes

Host gitlab #GitLabの設定
    User git
    HostName gitlab.com
    IdentityFile ~/.ssh/gitlab_rsa
    IdentitiesOnly yes
    AddKeysToAgent yes
  • Host:任意のユニークな値
  • HostName, User:github.comとgit
  • IdentityFile:先ほど作成したsshキーの秘密鍵のファイルパス作成した秘密鍵のファイルパス
  • IdentitiesOnly:複数のキーを保持している場合に、設定された鍵のみを使用するかどうかを設定。
  • AddKeysToAgent:キーとパスフレーズをssh-agentへ自動的に追加するかどうかを設定。

`ここでは、アカウント操作の間違いを起こさないためにglobalの設定は行わないとします。
すでに設定している場合は、以下のコマンドでglobalの設定を削除します。

$ git config --global --unset user.name 
$ git config --global --unset user.email

まず、~/.gitconfigを次のように設定します。

[includeIf "gitdir:~/github/"]
    path = ~/github/.gitconfig

[includeIf "gitdir:~/gitlab/"]
    path = ~/gitlab/.gitconfig

includeIfを利用することで、.gitconfigを条件付きで読み込むことができます。gitdirに読み込み先のディレクトリを指定します。このようにすることで、各ディレクトリで異なるconfigファイルを読み込むことができます。
そして、次のようにそれぞれのconfigファイルを作成します。まず、~/github/.gitconfigは以下です。

[user]
  name = abc
  email = abc@example.com
[url "git@github"]
    insteadOf = "git@github.com"

~/gitlab/.gitconfigは以下です。

[user]
  name = def
  email = def@example.com
[url "git@gitlab"]
    insteadOf = "git@gitlab.com"

insteadOfを利用すると、gitコマンド使用時に、insteadOfで指定した文字列が、urlで指定した文字列に置き換えられて実行される。ここでは、gitコマンド使用時にgit@github.comがgit@githubに置き換えられてから実行されます。

以上の設定を行うことで、GitHubとGitLabのアカウントを使い分けることができます。

確認

実際にそれぞれのアカウントに接続可能であることを確認するために、以下のコマンドを実行します。

$ ssh -T github
$ ssh -T gitlab

まとめ

今回は、GitHubとGitLabのアカウントを使い分ける方法を紹介しました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次