Git

Git: リモートのリポジトリを別のリモートリポジトリへコピーする

More than 1 year has passed since last update.

Bitbucketのリポジトリを、別のすでに作成されたリポジトリへのコピーをする方法です。

※これからリポジトリを新規作成する場合は「リポジトリのインポート」機能を使いましょう。

仮に以下のリポジトリを使うこととして進めます。


  • 移行元: bitbucket.org:user_a/abc.git

  • 移行先: bitbucket.org:user_z/xyz.git


手順概要


  1. リモートリポジトリのbearをミラーオプションでクローン

  2. originのPush先を移行先に切り替え

  3. 移行元に変更があれば取り込み

  4. 移行先にすべてをPush


手順

# 1: リモートリポジトリのbearをミラーオプションでクローン

git clone --mirror git@bitbucket.org:user_a/abc.git abc-mirror

# 2: originのPush先を移行先に切り替え
cd abc-mirror
git remote set-url --push origin git@bitbucket.org:user_z/xyz.git

## [確認] Fetchが移行元でPushが移行先の状態になっている
git remote -v
#> origin git@bitbucket.org:user_a/abc.git (fetch)
#> origin git@bitbucket.org:user_z/xyz.git (push)

# 3: 移行元の変更を取り込み
git fetch -p origin

# 4: 移行先にすべてをミラーオプションでPush (強制上書きなので注意)
git fetch -p origin
git push --mirror


リポジトリ利用者にリモートURLを変更してもらう

みんなにリモートURLを切り替えてもらえば完了!

git remote set-url origin git@bitbucket.org:user_z/xyz.git

もし移行元に変更があった場合、手順4を繰り返せば良いが、移行先に何かがPushされていた場合はすべてなかったことになるので注意。

参考:Mirroring a repository in another location