【Git】git remote コマンドでリモートリポジトリを変更する方法を解説

Web開発

はじめに

皆さんはGitでリモートリポジトリを設定している際に、git remote 変更 が必要になることはないでしょうか。
たとえば、リモート先をGitHubから他のホスティングサービスに切り替えたい場合や、HTTPS接続をSSH接続に変えるケースなどがあります。
こうした場面では、Gitのコマンドを使って既存のリモート設定を更新する必要があります。

本記事では初心者の方にもわかりやすいように、リモートリポジトリの変更方法を具体的に解説します。
実務で遭遇しやすいシチュエーションをまじえながら、複数のコマンドの使い方をステップごとにお伝えします。

この記事を読むとわかること

  • リモートリポジトリとは何か
  • git remote -v でリモート情報を確認する方法
  • git remote set-url を使った変更手順
  • リモート名を変えたり削除したりする方法
  • 実務上の注意点や活用シーンの例

リモートリポジトリとは?

まずは基本的なおさらいとして、リモートリポジトリの概念を整理しておきます。
Gitでは、ソースコードを共有したりバックアップを取ったりするために、クラウド上や他のコンピュータ上に配置されているリポジトリを「リモートリポジトリ」と呼びます。

ローカルリポジトリが手元の開発環境で管理されているのに対し、リモートリポジトリは複数の開発者がアクセスできる場所に存在します。
チームでの開発や複数の環境から同じリポジトリを扱う場合に欠かせないのが、このリモートリポジトリです。

実務では、初期設定でGitHubやGitLabを指定する方が多いでしょう。
しかし後になって、セキュリティ面や組織の方針でリポジトリの場所を変更しなければならないケースもあります。
このような場面で必要になるのが、git remote 変更 の操作です。

git remote -v で現在のリモート先を確認

まずは今どのリモートリポジトリが設定されているかを把握することが重要です。
そのために使うのが git remote -v というコマンドです。

git remote -v

このコマンドを実行すると、リモート名と実際のURLが一覧で表示されます。
たとえば以下のような出力が得られるかもしれません。

origin  https://github.com/YourName/YourRepo.git (fetch)
origin  https://github.com/YourName/YourRepo.git (push)

ここで表示される origin がリモート名、そして https://github.com/... がリモート先のURLです。
複数のリモート先を登録している場合は、その数だけ行が並びます。

このように、変更前の状態を把握することで、後ほどリモート設定を更新した際に正しく切り替わったかどうかを確認しやすくなります。

git remote set-url を使ってリモートを切り替える

リモートリポジトリのURLを変更したいときに便利なのが、git remote set-url コマンドです。
たとえば、HTTPS接続からSSH接続に変えたいケースがあったとしましょう。

基本的な使い方

構文は以下のようになります。

git remote set-url <リモート名> <新しいURL>

たとえば origin というリモート名を持ち、現在 https://github.com/YourName/YourRepo.git に紐づいているリポジトリを SSH 接続先に変えたい場合は、以下のように実行します。

git remote set-url origin git@github.com:YourName/YourRepo.git

実行したら、先ほど学んだ git remote -v でもう一度確認してみましょう。
リモート先のURLが更新されているかをチェックすることで、変更が反映されたか確かめられます。

実務でよくある場面

リポジトリホスティングサービスの変更

たとえば、GitHubからGitLabに移行する場合などに git remote set-url でURLを置き換えます。

接続プロトコルの変更

HTTPS接続では都度パスワード入力が必要なケースもあるため、SSH接続に切り替えることが多いです。

リモート名を変更するには git remote rename

リモートリポジトリのURLだけでなく、リモート名自体を変えたい 場合もあるかもしれません。
そのときに使えるのが git remote rename というコマンドです。

git remote rename <古いリモート名> <新しいリモート名>

もし origin の名前を main-repo に変えたい場合は、以下のようになります。

git remote rename origin main-repo

再度 git remote -v を実行すると、リモート名が main-repo に置き換わっているのが確認できるはずです。

リモート名は開発者同士でやり取りする際にも使われるため、チーム全体でわかりやすい命名を心がけると混乱を減らせます。
特にリポジトリを複数抱えている場合や、フォーク元とフォーク先を同時に扱う場合などには、リモート名を工夫すると作業しやすくなります。

リモートを削除したい場合は git remote remove

不要になったリモートを消す場面もあります。
いったん連携が必要なくなったホスティングサービスや、使われていないリポジトリのURLなどが残ったままだと紛らわしいですよね。
そんなときは git remote remove で削除できます。

git remote remove <リモート名>

たとえば、先ほどリネームした main-repo がもう不要になった場合は、以下のように実行します。

git remote remove main-repo

削除が完了したら、やはり git remote -v で一覧から消えているかチェックしましょう。

リモートを削除しても、すでにローカルにクローンしてあるソースコードが消えるわけではありません。
ただし、リモートリポジトリへのPushやFetchができなくなるので、削除の前に本当に不要かどうかをよく考えてから操作してください。

実務での活用シーンと注意点

リモートを変更する操作は、単純にURLを差し替えるだけに留まりません。
ここでは、実務で遭遇しやすいケースや気をつけたいポイントをいくつか見ていきましょう。

セキュリティとアクセス権

SSH接続に切り替えるときは、公開鍵と秘密鍵の設定が必要になります。
鍵の取り扱いを誤ると第三者にアクセスを許してしまう可能性があるため、リモート先のURLを変えたら認証まわりもあわせて確認しましょう。

リモート先の切り替えで影響が及ぶブランチ

リモート先を変えると、Push先やPull先のブランチも変わります。
これにより、コミットの反映先が変わることになるので、チームのメンバー全体に周知しておくことが大切です。
もし複数のブランチが並行して作業しているならば、各ブランチでリモート設定がどうなっているかも確認した方がよいでしょう。

既存のプルリクエストやissue

GitHubやGitLabなどでは、リモートリポジトリの移動によってプルリクエストやissueのURLが変わります。
未処理のタスクやレビュー依頼がある場合、それらも含めて整理し直す必要があるので注意してください。
とくに外部ツールと連携しているケースでは、変更後のリモート先と再連携が必要になる場合があります。

Gitが管理しているのはあくまでソースコードと履歴です。
リポジトリホスティングサービス特有の機能(プルリクエストやissue管理など)は、あらかじめデータ移行の手段を考えておきましょう。

ローカルブランチとリモートブランチの関連付け

リモートを変更した後、手元のローカルブランチが新しいリモート先ときちんと紐づいているかを再確認する必要があります。
とくに、もともと origin/main を追跡していたブランチが、新しいリモート名に置き換わると追跡先が消えてしまうことがあります。

origin/main を追跡するブランチを切り替える例

たとえば main-repo というリモート名に変更したあと、ローカルの main ブランチを以下のように再設定することがあります。

git branch --set-upstream-to=main-repo/main main

このコマンドによって、ローカルの main ブランチが新しいリモートブランチ main-repo/main と同期するように設定されます。
もしこれを忘れると、PushやPullをしようとしたときにエラーが起きる可能性があるため気をつけてください。

実務でよくあるトラブル例

ここでは、リモートの変更にまつわるトラブルの一例を取り上げます。

変更後のリモートにPushできない

多くの場合、SSH鍵の登録ミスやアクセス権の問題が原因です。
鍵のパーミッションや、Gitホスティングサービス側で鍵を登録したかどうかを確認しましょう。

古いリモート情報を消し忘れてコンフリクト

誤って古いリモートも残してしまい、行き先が複数存在する状態になってトラブルになるパターンがあります。
特に同じブランチ名で異なるリモートにPushしようとすると、「どのリモートが正しいのか」が混乱を招くので注意が必要です。

リモート名を間違えて設定し、プッシュ先がずれた

つづりを誤ってリモート名を設定したままPullやPushをした結果、意図しないリポジトリに更新を送信してしまうことがまれにあります。
チーム開発では深刻な問題につながるため、変更後は必ず git remote -v で確認すると安心です。

まとめ

git remote 変更 はシンプルなコマンド操作で対応できますが、実務ではさまざまな状況で必要となる重要な作業です。
URLの変更には git remote set-url 、リモート名の変更には git remote rename 、リモート削除には git remote remove と、それぞれのコマンドを使い分けましょう。

また、リモートを変更した際にはPush先やPull先、そしてSSH鍵などの認証関連も同時にチェックすることが大切です。
チームで作業している場合は、メンバー全体で変更内容を共有しないと混乱を生む恐れがあります。

ぜひ、ここで紹介した手順や注意点を活用して、よりスムーズにGitリポジトリを管理してみてください。

Gitをマスターしよう

この記事で学んだGitの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。