見出し画像

あるGitのリモートリポジトリを別のサーバーのリポジトリに移行する方法

概要

ある案件にて、とあるサーバーにあるGitのリモートリポジトリを別のサーバーにこれまでのコミット履歴ごとコピーして欲しいという依頼がありました。
ここではそのやり方の手順を説明します。
このやり方で移行すれば過去のデータの蓄積もあるので指定のタイミングのデータを取り出すことができます。

なお、今回はGitのサービスはヌーラボのBacklog、ツールはTortoiseGitで行いましたのでその時のキャプチャ画面を元に説明します。
違うサービスやツールを使う場合は適宜読み替えてください。


手順

移行元のGitのリモートリポジトリからHTTPSのURLをコピー

移行元のGitのリモートリポジトリ(ここでは「Git_A」とします)からHTTPSのURLをコピーします。
URLは「~.git」となっているはずです。
BacklogならプロジェクトからGitを選択し、クリップボードのアイコンをクリックすればできます。


ローカルリポジトリを作成

ローカルにフォルダを作成して「Git_A」のリモートリポジトリのURLからGitをクローンしてローカルリポジトリを作成します。
この例では「local_git」というフォルダを作成して右クリックから「Git クローン(複製)」を選択します。
「Git ここにリポジトリを作成」ではないので注意。


Gitクローンの設定

Gitクローンのダイアログでは「URL」には先程クリップボードにコピーしたURL(ここでは「Git_A」の)を貼り付けます。
ディレクトリ」は選択したフォルダ(ここでは「local_git」)のパスになるようにします。
問題なければ選択したフォルダがローカルリポジトリになります。


移行先のリモートリポジトリを作成しURLをコピー

移行先のGitのリモートリポジトリを作成(ここでは「Git_B」とする)し、HTTPSのURLをコピーします。
作成されてからデータがまだ入っていない状態にしておきます。


ローカルリポジトリの設定

作成したローカルリポジトリ(ここでは「local_git」)のフォルダで右クリックしてGitの設定を呼び出します。
設定ウィンドウの左側の「Git」を選択し、右の項目から「ローカルリポジトリ設定を編集」ボタンを押します。


エディターでURLを編集

エディターの編集画面が出るので「url」の内容を移行元(Git_A)のURLから移行先(Git_B)のURLに書き換えて保存して終了します。
これでこのローカルリポジトリのリモートリポジトリは移行先に変更されます。


リモートリポジトリにPushする

この時点でローカルリポジトリ(local_git)のリモートリポジトリは移行先(Git_B)ですが、データの内容(履歴含む)は移行元(Git_A)のリモートリポジトリそのものとなっています。
ローカルリポジトリ(local_git)のフォルダで右クリックして
TortoiseGit - プッシュ を選択してリモートリポジトリ(Git_B)にPushします。
Gitコミット -> "master" ではないので注意。


移行完了!

これで移行元のリモートリポジトリ(Git_A)の内容を持つローカルリポジトリ(local_git)の内容が移行先のリモートリポジトリ(Git_B)に反映されます。
つまり、コミット履歴含む移行元のすべてのデータが新しい移行先のリモートリポジトリに複製されます。


お疲れさまでした!
これで移行元と寸分違わぬ新しいリモートリポジトリが作成されました。
今後はこのリモートリポジトリもローカルリポジトリも今まで通り普通に使用することができます。

この記事が気に入ったらサポートをしてみませんか?