これは何?
あるGitリポジトリ(Primary)の履歴(コミット、リファレンス等)をそのまま別のリポジトリ(Secondary)を作成し、引き続き同期(シンク)をし続ける方法のメモです。(GitHub的に言うとForkってやつ。)
例えば、BitbucketからGitHubに、逆にGitHubからBitbucketにそのまま内容を手動で移行するときに使えるはず。
手順の概要
以下の手順で同期を行う。
- Primaryからリポジトリの内容をローカルPCにClone (a)
- SecondaryのURLをremoteとしてCloneしたリポジトリに追加
- Primaryから履歴等をfetchする
- Secondaryに対してPushする(b)
- 随時同期:Primaryから差分をfetchしてきて、SecondaryにPush
1. PrimaryからCloneする (a)
ローカルPCからの操作で一旦ローカルにコピーCloneする。
$ git clone --mirror https://01_url/prm_repo.git
2. SecondaryのURLを追加する
remoteのURLを追加して同期する先のリポジトリを指定する。
$ git remote add --mirror=fetch secondary https://02_repo_url/scd_repo.git
3. Primaryからfetch
Primaryから履歴等すべてをfetchする。
$ git fetch origin
4. Secondaryに対してPush
$ git push secondary --all
5. 随時同期する
$ git fetch origin && git push secondary --all
おわりに
ここでは、PrimaryからSecondaryへ一方通行の同期をメモをしたが、以下のReferenceのURLでは逆方向(Secondaryの更新をPrimaryに同期する)の方法も記載されているので、必要に応じて確認してください。