バージョン管理をCodeCommit→GitHubに移行する方法です。
Contents
はじめに
バージョン管理をCodeCommit→GitHubに移行する方法を説明します。
以下の前提で話を進めます。
- CodeCommit + Cloud9 で管理しているプロジェクトがある
- GitHubアカウントがある
もともと、CodeCommit使ってみてたんですが、まだまだ細かいところで手が届かないというか。。。(Pull Requestなど)
もちろん、AWS内で完結できるのも、かなりメリットなので、今後のアップデートに期待ですね。
ちなみに、CodeCommitでバージョン管理する方法は以前の記事を参考にしてください。
GitHub にリポジトリを作成する
GitHub側にリモートリポジトリを作成します。
右上の「+」メニューの New repository をクリック
Repository name に名前を入れ(何でも良し)、Priveteに設定して、Create repository をクリック。
リモートリポジトリ作成完了です。
Cloud9とGitHubをSSH接続する
公開鍵を作成
Cloud9のターミナルで以下コマンドを実行
$ ssh-keygen -t rsa
実行するとパスワードを設定するか聞かれますが、すべて空でEnterします。
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:
※passphraseを設定するとpushやpullの都度パスワードを聞かれるので、空で設定しています。
.sshフォルダ配下に「id_rsa(秘密鍵)」「id_rsa.pub(公開鍵)」の2つが作成されます。筆者のAWS環境だと.sshフォルダの位置は以下でした
/home/ec2-user//.ssh
id_rsa.pubをGitHubへ登録
id_rsa.pub(公開鍵)の中身をコピーします。方法はなんでも良いですが、筆者はVimを使いました。
.sshフォルダで以下コマンドを打って表示された中身をコピーすればOK。
$ vim id_rsa.pub
コピーが終わってエディタ画面を抜けるときは「:q」と打ってエンター。
GitHub側で公開鍵を登録
GitHubにログインし、右上のユーザーアイコン→Settingsをクリック
SSH and GPG keys → New SSH key をクリック
※SSH and GPG keys クリック後はGitHubパスワードを聞かれるので入力します。
Key に コピーした内容を貼り付け、Titleを設定して(何でも良し)、Add SSH key をクリック。GitHub側の設定はこれでOK。
Cloud9のリモートリポジトリ変更
リモートリポジトリをCodeCommit → GitHub に変更します。
GitHubを開き、リポジトリを開いて Code → SSH → 表示された接続先をコピーします
Cloud9で接続先を変更します。以下コマンドをうち、new url の部分に先ほどコピーした接続先を貼り付け。
$ git remote set-url origin [new url]
以下コマンドで接続先を確認、新しい接続先になっていたら成功です。
$ git remote -v origin git@github.com:新しい接続先 (fetch) origin git@github.com:新しい接続先 (push)
以下コマンドでSSH接続します。
$ ssh -T git@github.com
以下メッセージが表示されればOK。
Hi [user name]! You've successfully authenticated, but GitHub does not provide shell access.
Pushして、GitHub側に反映していれば成功です。
$ git push -u origin master
リモートリポジトリを共有している場合
共同開発していた場合、他の開発者もリモートリポジトリを変更する必要があります。
GitHubのリモートリポジトリを共有
共有するリポジトリを開き、
Settings → Manage access → invite a collaborator をクリック。
※Manage access クリック後はGitHubパスワードを聞かれるので入力します。
共有するアカウントを入力して、Select a collaborator above をクリック。これで招待完了です。
共同開発者側でCloud9とGitHubをSSH接続する
共同開発者側でもSSH接続設定が必要です。方法は上記「Cloud9とGitHubをSSH接続する」と同じですが、「Cloud9のリモートリポジトリ変更」は不要です。
GitHub側からCloneする
Cloud9でリポジトリ用フォルダに移動し、以下コマンドでCloneします。共有リモートリポジトリの部分はGitHubの接続先です。
$ git clone git@github.com:共有リモートリポジトリ
以下メッセージが表示されたら yes と入力してEnter。
Are you sure you want to connecting (yes/no)?
これでCloneされて作業完了です。
同時に接続先もGitHub側で設定されます。