ghq で GitHub の複数のアカウントを使う

スポンサーリンク

概要

ghq を使うことで GitHub などのコード管理のためのリポジトリとの連携を便利に管理することができますが、GitHub のアカウントを複数保持している場合、少し工夫をしないと ghq に適用することができません。
基本的には、ghq の本家のドキュメントである下記に記載している内容で設定できるのですが、自分的には少しわかりにくかったので、メモとして設定例を残しておこうと思います。

File not found · Songmu/ghq-handbook
Contribute to Songmu/ghq-handbook development by creating an account on GitHub.

前提条件

下記の状態であることを前提条件とします。

  • GitHub アカウントを複数保持している
  • それらでそれぞれ git clone などを行うことができている
  • ghq をインストール済み

以降、例として下記のような状態とします。

  • メインで使っている GitHub アカウントの他に、特定のプロジェクトで使っている GitHub アカウントを koumei2とする

設定

ghq の設定は ~/.gitconfig に書かれますので、Git, GitHub の設定とあわせて下記のようになりました。

[user]
        email = xxxx@xxx.xxx.xxx
        name = XXXX XXXX

[ghq]
        root = ~/git/default

[ghq "https://github.com/koumei2"]
        root = ~/git/koumei2

[url "git@koumei2.github.com:koumei2"]
        insteadOf = https://github.com/koumei2

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

[user] は Git で使用する email, name の通常の設定ですね。

次の [ghq], [ghq "https://github.com/koumei2"] の設定は、GitHub の URL ごとに ghq が get してくるコードの保存先を変える設定です。
上記の例では、https://github.com/koumei2 とそれ以外とでディレクトリを分けています。
ここで、koumei2 が保持しているリポジトリは、GitHub の koumei2 アカウントで取得してくることを想定しています。
その際に、private なリポジトリは ssh でのみ取得できるよう設定しているので、https ではなく、ssh で取得してくるよう、Git コマンド側も設定します。
その設定が、[url "git@koumei2.github.com:koumei2"] の部分です。

最後に、[includeIf "gitdir:~/git/koumei2/"] ですが、こちらは koumei2 アカウントで ghq get してきたディレクトリ以下のものは、通常の Git 設定を ~/git/koumei2/.gitconfig で上書きするようにする設定です。
例えば、email や name は通常使用するものとは別の Organization に沿った設定にしたいと思いますので、下記のような設定を書いておきます。

[user]
        email = yyyy@yyy.yyy.yyy
        name = YYYY YYYY

これで、複数の Git アカウントを意識することなく、ghq コマンドを使ってリポジトリを管理することができました!

コメント

タイトルとURLをコピーしました