現在登録されているリポジトリを、別のリポジトリに移動する方法です。下記二つの方法についてまとめています。
- 同じGitアカウント内のリポジトリで移行する
- 異なるGitアカウントのリポジトリに移行する
同じアカウント内でリポジトリを以降する
まず、現在のリモートリポジトリのURLを確認します。
$ git remote -v
origin git@github.com:user-name/repository-old.git (fetch)
origin git@github.com:user-name/repository-old.git (push)
変更先のURLをセットします。
$ git remote set-url origin git@github.com:user-name/repository-new.git
改めて確認します。
$ git remote -v
origin git@github.com:user-name/repository-new.git (fetch)
origin git@github.com:user-name/repository-new.git (push)
ローカルのブランチ名をmainに変更します。
$ git branch -M main
リモートリポジトリにpushします。
$ git push -u origin main
以上です。
異なるGitアカウントのリポジトリに移行する
基本的には同じアカウント内のリポジトリに移行する方法と同じですが、事前に利用するSSH鍵に関するconfigファイルを作成する必要があります。
リポジトリに応じて利用する鍵を切り替えられるように、configファイルを~/.ssh/config
に作成します。下記の例では、移行元に影響を与えないように、移行元ユーザのホスト名をgithub
にして、移行先ユーザのホスト名をgithub-sub
にしています。
※id_rsa
という鍵が移行元で、id_rsa_2
という鍵が移行先の鍵です。
Host github
HostName github.com
User main-user
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
Host github-sub
HostName github.com
User sub-user
IdentityFile ~/.ssh/id_rsa_2
IdentitiesOnly yes
上記のconfigファイルを作成したら、ローカル環境のリモートリポジトリのURLを変更します。
まず、現在のリモートリポジトリのURLを確認します。
$ git remote -v
origin git@github.com:user-name/repository-old.git (fetch)
origin git@github.com:user-name/repository-old.git (push)
github-subホストを使うように変更します。
$ git remote set-url origin git@github-sub:new-user-name/repository-new.git
改めて確認します。
$ git remote -v
origin git@github-sub:new-user-name/repository-new.git (fetch)
origin git@github-sub:new-user-name/repository-new.git (push)
あとは、pushしたら終了です。
$ git push -u origin main