akiyoko blog

akiyoko の IT技術系ブログです

GitHub から Bitbucket にプライベートリポジトリを移行する方法

1. はじめに

プライベートリポジトリを GitHub で管理したいがために、これまで 1年半ほど、Microプラン(プライベートリポジトリを5つまで作成可)に入っていたのですが、最近の円高の影響もあって、頻繁に更新しているわけでもないのに毎月7ドル(先月の支払は 876円)も払い続けているのは地味に高いなぁと思っていたわけです。

f:id:akiyoko:20150728004522p:plain


GitHub は使い慣れていたので、これはこれで良かったのですが、Bitbucket なら無料プランでもプライベートリポジトリがいくつでも作れると(ただしチームは5人まで)いうことを知り、簡単に移行できればなぁと思ってググったところ、qiita.com
という素敵な記事を見つけたので、早速移行してみることに。



そういうわけで今回は、GitHub から Bitbucket にプライベートリポジトリを移行する手順をメモしておきます。


例として、以下のプライベートリポジトリが GitHub にあるとして話を進めます。
f:id:akiyoko:20150728003731p:plain




2. 手順

Bitbucket にログインし、「作成」 -> 「リポジトリの作成」をクリック。

f:id:akiyoko:20150728003736p:plain




Name 移行する GitHub の privateリポジトリと同じ名前
アクセスレベル 「これは非公開リポジトリです」にチェック

を入力し、「リポジトリの作成」をクリックして空のリポジトリを作成します。

f:id:akiyoko:20150728003741p:plain



以降のコマンドは、
f:id:akiyoko:20150728003758p:plain
で書かれている内容とほぼ同じです(「git remote add」が「git remote set-url」に変わっているくらい)。


ちなみに、Mac のターミナルで操作しています。

$ cd ~
$ mkdir github
$ cd github/

### GitHub から clone
$ git clone https://github.com/akiyoko/d3-position.git
$ cd d3-position/
$ git remote -v
origin	https://github.com/akiyoko/d3-position.git (fetch)
origin	https://github.com/akiyoko/d3-position.git (push)

### リモートリポジトリのアドレスを書き換え
$ git remote set-url origin https://akiyoko@bitbucket.org/akiyoko/d3-position.git
$ git remote -v
origin	https://akiyoko@bitbucket.org/akiyoko/d3-position.git (fetch)
origin	https://akiyoko@bitbucket.org/akiyoko/d3-position.git (push)

### Bitbucket に push
$ git push -u origin --all
$ git push -u origin --tags




ここまでで、GitHub から Bitbucket へのリポジトリの移行は問題なく完了しているのですが、Bitbucket のリポジトリを見てみると、コミットユーザのところに「対応づけのないユーザ」という表示が出ている場合があります。


この場合は、以下のリンクから、ユーザー名のエイリアスを追加するとよいようです(ちなみに、ユーザー名のエイリアスはリポジトリごとの設定となります)。
f:id:akiyoko:20150728003825p:plain


f:id:akiyoko:20150728003831p:plain





最後に、Bitbucket のリポジトリが正しく clone できるか確認しておきます。

$ cd ~/tmp/
$ git clone https://akiyoko@bitbucket.org/akiyoko/d3-position.git

特に問題ありませんでした。




3. まとめ

今まで GitHub にお金を払っていたのが馬鹿らしくなるくらい、Bitbucket へのプライベートリポジトリの移行は簡単でした。

もっと早く知っていれば。。。うう。