はじめに
数ある記事の中で本記事まで足を運んでいただき本当にありがとうございます。
この記事では、リモートリポジトリを新しいリポジトリに移行する手順をご紹介します。
併せてコミット履歴・タグ・ブランチの全てを移行します。
今回検証を行ったのは、Bitbucket→GitHubの移行になります。
※GitHubへの移行ではGitHubのインポート機能を使う方法もございますが、本記事ではgitコマンドを使用する方法をご紹介いたします。
全体像のイメージ
手順
1. 新しいリモートリポジトリを作成
GitHub上に新リポジトリ(空のリポジトリ)を作成します。
2. リポジトリをローカルにミラーでクローンする
作業ディレクトリ(ミラーリポジトリ)を作成します。
そしてディレクトリ内に移動します。
ミラーリポジトリとは
「ワーキングディレクトリが存在しない」リポジトリのこと。
実際のソースコードがなく、更新履歴・ブランチ・タグなどといったGitの情報のみを保持しているリポジトリのことです。
mkdir [ミラーリポジトリ名]
cd [ミラーリポジトリ名]
gitの情報をmirrorオプションを使用してクローンします。
mirrorオプションとは
リポジトリのすべてのリファレンス(更新履歴・ブランチ・タグ等)をそのまま保持し、完全なコピーを作成します。
git clone --mirror 現リポジトリURL ./
3. 新リポジトリにPush
gitの情報をmirrorオプションを使用して新リポジトリ(空のリポジトリ)に反映します。
git push --mirror 新リポジトリURL
4.リモートURLを新リポジトリに変更する
ローカルの作業リポジトリのリモートリポジトリのURLを確認します。
git remote -v
追跡ブランチ先とpush先を新リポジトリへ変更します。
git remote set-url --push origin 新リポジトリURL (push先だけ変更できる)
git remote set-url origin 新リポジトリURL(追跡ブランチ先とpush先の両方変更可能)
最後に
リモートリポジトリの移行・複製を検討されている方の参考になると幸いです。
参考URL