症状
GitリポジトリのリモートURL(origin)を変更したい。HTTPSからSSHに変えたい、リポジトリを移行した、組織が変わったなど。
結論:まずこれを確認
git remote -vで現在のリモートURLを確認するgit remote set-url origin 新しいURLで変更する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の変更はローカルの設定変更のみ。コミット履歴はそのまま維持される。
関連するトラブル
準備中
解決しない場合
- Git公式ドキュメント: https://git-scm.com/docs/git-remote
- GitHub Docs - リモートURLの管理: https://docs.github.com/ja/get-started/getting-started-with-git/managing-remote-repositories
- 確認すべき設定:
cat .git/configでリモート設定を直接確認 - 次に調べるキーワード: 「git SSH鍵 設定」「GitHub personal access token」「git permission denied」