目次Category
お客様のBacklogから、社内管理下のBacklogへGitリポジトリを移管しました。
移管方法にはいくつかあるようですが、今回は「–mirror」オプションを使った方法で行いました。
その方法をご紹介したいと思います!
移管方法にはいくつかあるようですが、今回は「–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を実行した後、以下のようなエラーが起きる場合があります。
Enumerating objects: 96234, done.
Counting objects: 100% (96234/96234), done.
Delta compression using up to 12 threads
Compressing objects: 100% (46764/46764), done.
Writing objects: 100% (96234/96234), 316.84 MiB | 6.98 MiB/s, done.
Total 96234 (delta 44730), reused 96234 (delta 44730), pack-reused 0
error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
Everything up-to-date
調べてみると、どうやら通信回線の速度や、ファイルの容量が影響しているようです。
バッファサイズを変更するなどして対応しましょう。
【要注意】PUSH先を変更する
PUSH先を変更しておかないと、旧リポジトリへPUSHしてしまいます。
業務で行っていると大変です!
リポジトリ移管が終わったら、PUSH先を変更しましょう。
#現在のPUSH先を確認
git remote -v
# PUSH先を変更
git remote set-url origin [新リポジトリURL]
#変更されていることを確認
git remote -v
まとめ
個人的に、このミラーリポジトリを使った方法が手軽だと感じました。
現在あるリポジトリにブランチを全てチェックアウトして、新リポジトリへ「総PUSH!」みたいな方法もあります。
こちらは試していませんが、結構時間がかかりそうです。。。
Gitにはいろんなコマンド、オプションがあるので一通り触っておくと良いかもしれませんね。