症状

GitリポジトリのリモートURL(origin)を変更したい。HTTPSからSSHに変えたい、リポジトリを移行した、組織が変わったなど。

結論:まずこれを確認

  1. git remote -v で現在のリモートURLを確認する
  2. git remote set-url origin 新しいURL で変更する
  3. git remote -v で変更後のURLを確認する

操作フロー

    flowchart TD
    A[リモートURLを変更したい] --> B[git remote -v で現在のURL確認]
    B --> C{変更理由は?}
    C -->|HTTPS→SSH| D[SSHのURLを取得]
    C -->|SSH→HTTPS| E[HTTPSのURLを取得]
    C -->|リポジトリ移行| F[新しいリポジトリのURLを取得]
    C -->|組織/ユーザー名変更| G[新しいURLを取得]
    D --> H[git remote set-url origin 新URL]
    E --> H
    F --> H
    G --> H
    H --> I[git remote -v で確認]
    I --> J{正しく変更された?}
    J -->|Yes| K[git fetch で接続テスト]
    J -->|No| L[URLを再確認して再実行]
    K --> M{接続成功?}
    M -->|Yes| N[完了]
    M -->|No| O[認証設定を確認]
  

よくある原因

  • HTTPSからSSHへ変更したい - パスワード入力を省略したい、2FA導入後の対応
  • SSHからHTTPSへ変更したい - SSHキー設定の問題を回避したい
  • リポジトリを別の場所に移行した - 組織間移動、GitHubからGitLabへ移行など
  • ユーザー名や組織名が変わった - URLに含まれる名前が変更された
  • フォーク元からfork先に変更したい - upstream を origin に変更
  • ミラーリポジトリへ変更 - 別サーバーのリポジトリを指定したい
  • タイプミスの修正 - 最初の設定時にURLを間違えた

操作手順

ステップ1: 現在のリモートURLを確認する

    git remote -v
  

🔍 チェックポイント: origin の fetch と push のURLが表示される

出力例:

    origin  https://github.com/username/repo.git (fetch)
origin  https://github.com/username/repo.git (push)
  

ステップ2: 新しいURLを取得する

GitHub/GitLabのリポジトリページから新しいURLをコピーする。

HTTPS形式:

    https://github.com/username/repo.git
  

SSH形式:

    git@github.com:username/repo.git
  

🔍 チェックポイント: URLの形式(HTTPS/SSH)と、ユーザー名・リポジトリ名が正しいことを確認する

ステップ3: リモートURLを変更する

    git remote set-url origin 新しいURL
  

具体例(HTTPSからSSHへ変更):

    git remote set-url origin git@github.com:username/repo.git
  

具体例(SSHからHTTPSへ変更):

    git remote set-url origin https://github.com/username/repo.git
  

具体例(リポジトリ移行):

    git remote set-url origin https://github.com/new-org/new-repo.git
  

ステップ4: 変更を確認する

    git remote -v
  

🔍 チェックポイント: origin のURLが新しいものに変わっていることを確認する

出力例:

    origin  git@github.com:username/repo.git (fetch)
origin  git@github.com:username/repo.git (push)
  

ステップ5: 接続テストを行う

    git fetch origin
  

🔍 チェックポイント: エラーなく完了すれば接続成功

SSHの場合、初回接続時に確認メッセージが出ることがある:

    The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
Are you sure you want to continue connecting (yes/no)?
  

yes と入力する

ステップ6: push/pullの動作確認(任意)

    git pull origin main
  

🔍 チェックポイント: Already up to date または変更が取得できれば成功

NG行動

  • git remote remove してから add し直す - set-url で十分。履歴やトラッキング設定が失われる可能性がある
  • URLを確認せずに変更する - 変更前後で git remote -v を必ず実行する
  • SSHキー未設定のままSSH URLに変更する - Permission denied エラーになる
  • 存在しないリポジトリURLを設定する - fetch/push時にエラーになる

よくある質問(FAQ)

Q1: fetchとpushで別のURLを設定できる?

A: 可能。push用URLだけ変更する場合:

    git remote set-url --push origin プッシュ用URL
  

Q2: origin以外のリモート(upstream等)のURLを変更するには?

A: リモート名を指定する:

    git remote set-url upstream 新しいURL
  

Q3: リモートURLを変更したら過去のコミット履歴は消える?

A: 消えない。リモートURLの変更はローカルの設定変更のみ。コミット履歴はそのまま維持される。

関連するトラブル

準備中

解決しない場合