何を解決するか?
1台のPCから GitHub と AWS CodeCommit の両方をCloneして扱うことができるようにします。
Git の使い方を説明した多くの記事では、単一のホスティングサービスを前提としており、複数のホスティングサービスの設定を持つ方法についての説明が不足してたので、この記事を書きました。
要約
GitHub と CodeCommit のアカウント(ユーザー名、メールアドレス)は当然ですが、別々のものになりますので、これを Git でどうやって設定するかという話になります。
簡単に説明すると、アカウント設定は .gitconfig に持ちますが、これをホスティングサービス毎に分け、Clone先ディレクトリ名で判断して、これを切り替えるように設定します。
この記事では Git for Windows (https://gitforwindows.org/) で試していますが、恐らく Linux や Mac でも同じです。
手順1: ホスティングサービス毎にClone先ディレクトリを作る
まず最初にホスティングサービスのClone先ディレクトリを作ります。今回は Cドライブの repos 直下に github, codecommit の2つのディレクトリを作りました。
mkdir C:\repos\codecommit
mkdir C:\repos\github
手順2: ホスティングサービス枚に.gitconfigを分ける
Windows では .giconfig は C:\Users<user_name>.gitconfig にあります。同じディレクトリに.gitconfig_github, .gitconfig_codecommit を作ります。ファイルの中身は次のようにします。
[http]
[user]
name = codecommitで使うユーザー名
email = codecommitで使うメールアドレス
[http]
[user]
name = githubで使うユーザー名
email = githubで使うメールアドレス
手順3: git config を設定する
次のコマンドを実行して、Clone先パスに "github" が含まれる場合は .gitconfig_githubを使うように設定します。また、githubの場合も同様に.gitconfig_githubを使うように設定します。
git config --global includeIf."gitdir:**/codecommit/".path ".gitconfig_codecommit"
git config --global includeIf."gitdir:**/github/".path ".gitconfig_github"
上記のコマンドを実行すると、.gitconfig は次のように変更されます。
[http]
[user]
useConfigOnly = true
~ ~ ~ 中略 ~ ~ ~
[includeIf "gitdir:**/codecommit/"]
path = .gitconfig_codecommit
[includeIf "gitdir:**/github/"]
path = .gitconfig_github
手順4: 設定の確認
設定が正しくできているか、codecommitディレクトリに確認用のtestrepoを作成して設定を確認します。
cd c:\repos\codecommit
mkdir testrepo
git init
git config user.name
rem codecommitで使うユーザー名が表示されます
git config user.email
rem codecommitで使うメールアドレスが表示されます。
同様にgithubディレクトリでも確認します。
cd c:\repos\github
mkdir testrepo
git init
git config user.name
rem githubで使うユーザー名が表示されます
git config user.email
rem githubで使うメールアドレスが表示されます。
以上で設定は完了です。
まとめ
この記事では設定ファイルをパス名を条件に切り替える方法をまとめました。今回はcodecommit, githubで分けましたが、この方法を応用することでプロジェクトごとに設定を変えることも可能です。設定にはユーザー名やメールアドレスだけでなく、プロキシ設定なども分けることができます。うまく使うことで素晴らしいgitライフが待っていることでしょう。
参考
最後になりますが、今回の記事の参考にさせていただいたページをご紹介します。ありがとうございました。