githubを有料アカウントにしてprivateリポジトリの制限がなくなったため、bitbucketにあるリポジトリをgithubに移しました。
その時の手順まとめ。
githubには外部サービスからのインポート機能があるため、単純に移行するだけならばこれを利用すれば良い。
ただ、今回はbitbucketの各リポジトリのauthorを変更した上でコミットログも修正、その後githubに上げ直すということをしたかったので、この機能を使わずに手動で作業した。
手順はざっくりこんな感じ
- bitbucketからリポジトリをローカルにクローンする
- リポジトリのauthorとコミットログを修正
- githubにリポジトリを作る
- ローカルのリポジトリにgithubのリポジトリへのリモートを追加
- githubのリポジトリに向けてプッシュ
- bitbucketのリポジトリを削除
1, 5についてはよくあるgit操作なので詳細は割愛。
3, 6はそれぞれサービス上のアカウント設定からできます。
2, 4がちょっと操作が必要だったので、備忘録として残しておく。
リポジトリのauthorとコミットログを修正
bitbucketとgithubでauthor情報が違っていたので、githubのものに設定した上で過去のコミットログのauthorも全て書き換えたかった。
こちらの記事を参考に修正した。
git config --local user.email <new_author_email@mail.com> git config --local user.name <new_author_name> git filter-branch -f --env-filter "GIT_AUTHOR_NAME='<new_author_name>'; GIT_AUTHOR_EMAIL='<new_author_email@mail.com>'; GIT_COMMITTER_NAME='<new_author_name>'; GIT_COMMITTER_EMAIL='<new_author_email@mail.com>';" HEAD
これをローカルにクローンしてきたリポジトリ内で実行する。
ローカルのリポジトリにgithubのリポジトリへのリモートを追加
githubでリポジトリを作ると、既存のリポジトリ用に追加するためのコマンドが表示される。
ところが、これはリモート名が「origin」になっており、bitbucketからクローンしてきたリポジトリにはすでにoriginはbitbucketのリポジトリに向いた状態で設定されている。
これを書き換えても良かったが、めんどくさかったのでoriginではなく「github」というリモート名で登録するようにした。
git remote add github git@github.com:<github_user_name>/<repository_name>.git
この状態でgithubにプッシュしようと思ったら、originではなく「github」を向き先に設定する。
git push github master
感想
というわけで、githubで無制限のprivateリポジトリが作れるようになって、bitbucketからの移行も完了した。
月800円程度支払うがそれに見合うだけのメリットだと思うし、リポジトリを一箇所で管理できるようになったのでとても嬉しい。
これからもガンガン写経していきたい。