お客様のBacklogから、社内管理下のBacklogへGitリポジトリを移管しました。
移管方法にはいくつかあるようですが、今回は「–mirror」オプションを使った方法で行いました。
その方法をご紹介したいと思います!
「–mirror」とは
「git clone」コマンドには、様々なオプションがあります。
・チェックアウトしたいブランチを指定する「–branch」
・IPv4のみを使用する「–ipv4」
・指定したブランチのみを複製する「–single-branch」
そのオプションのうちの1つが「–mirror」です。
ミラーリポジトリを作成してローカルに複製するためのオプションです。
ミラーリポジトリとは
「bareリポジトリ」とも呼ばれるようです。
これは「ワーキングディレクトリが存在しない」リポジトリのことです。
つまり、実際のソースコードがなく、更新履歴やブランチ、タグなどといったGitの情報のみを保持しているリポジトリのことです。
このようなリポジトリは、慣習的に「.git」拡張子をつけます。
Git移管の手順
それでは、移管を行っていきましょう!
# ローカルリポジトリへ移動
cd ローカルリポジトリ
# リモートリポジトリのURLを確認
git remote -v
# 1つ上の階層へ移動
cd ..
# ミラーリポジトリとしてクローンする
git clone --mirror [リモートリポジトリURL] [クローンするリポジトリ名(任意)]
# 以下のように表示されたらクローン完了
Resolving deltas: 100% (35000/35000), done.
cd [クローンしたリポジトリ名]
git push --mirror [移管したい新リポジトリURL]
Username for 'BacklogのURL': [メアドを入力]
Password for '[入力したメアド]@BacklogのURL': [パスワードを入力]
しばらく待って、完了です!
お疲れさまでした。
【要注意】PUSH先を変更する
PUSH先を変更しておかないと、旧リポジトリへPUSHしてしまいます。
業務で行っていると大変です!
リポジトリ移管が終わったら、PUSH先を変更しましょう。
#現在のPUSH先を確認
git remote -v
# PUSH先を変更
git remote set-url origin [新リポジトリURL]
#変更されていることを確認
git remote -v
まとめ
個人的に、このミラーリポジトリを使った方法が手軽だと感じました。
現在あるリポジトリにブランチを全てチェックアウトして、新リポジトリへ「総PUSH!」みたいな方法もあります。
こちらは試していませんが、結構時間がかかりそうです。。。
Gitにはいろんなコマンド、オプションがあるので一通り触っておくと良いかもしれませんね。