はじめに
前回の記事では、GitLabからGitHubへのリモートリポジトリの向き先を変更する方法を紹介しました【https://qiita.com/hazure_engineer/items/8ddd12105ed4ae3d682a 】。今回は、その続きとして、既存のリポジトリの内容と履歴を新しいリポジトリに完全に複製する方法を説明します。自分はGitLabからAmazon CodeCatalystに移行する際にこの手順を使いましたが、他のプラットフォームに移行する際にも役立つと思います。
1. 既存のリポジトリをクローンする
まず、既存のリポジトリ(ソースリポジトリ)をローカルにクローンします。これは --mirror
オプションを使用して行い、リポジトリ全体の複製を作成します。このオプションを使うと、すべてのブランチ、タグ、コミット履歴が含まれます。
git clone --mirror 既存のリポジトリのURL
cd クローンしたリポジトリの名前
2. 新しいリポジトリにプッシュする
クローンしたリポジトリを新しいリポジトリにプッシュするために、まず新しいリモートリポジトリのURLを設定します。
git remote set-url origin 新しいリポジトリのURL
その後、リポジトリ全体を新しいリポジトリにプッシュします。この際にも --mirror
オプションを使用します。
git push --mirror
--mirror
オプションにより、すべてのリファレンス(ブランチ、タグ、コミット履歴など)が新しいリポジトリに複製されます。
3. 移行が成功したかを確認する
移行が成功したかどうかを確認するために、新しいリポジトリをブラウザで開いて内容をチェックします。また、新しいリポジトリのURLを使ってローカルにクローンして、正しく移行されたかどうかを確認します。
git clone 新しいリポジトリのURL
cd クローンしたリポジトリの名前
git log
git log
コマンドで、コミット履歴が正しく複製されていることを確認できます。
まとめ
この手順を実行することで、既存のリポジトリの全内容と履歴を新しいリポジトリに複製することができます。プロジェクトの移行やバックアップを行う際に、この手順を参考にしてください。