Gitリポジトリを変更する方法

現在登録されているリポジトリを、別のリポジトリに移動する方法です。下記二つの方法についてまとめています。

  1. 同じGitアカウント内のリポジトリで移行する
  2. 異なる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ファイルを作成する必要があります。

前提

移行先アカウントの鍵は作成済みで、Gitのアカウントに公開鍵が登録している状況を想定しています。もしまだ鍵を作っていない場合、ssh-keygenコマンドで作成してください。

# 鍵の作成例
$ cd ~/.ssh
$ ssh-keygen -t rsa -f id_rsa_2

リポジトリに応じて利用する鍵を切り替えられるように、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
  • この記事を書いた人

たかさん

犬と暮らすクラウドエンジニア。GCPが好きだけど良く触るのはAWSとAzureです。

-コマンド
-