リモート リポジトリの追�
新しいリモートを追� するには、リポジトリが保存されているディレクトリでターミナルから git remote add
コマンドを使います。
git remote add
コマンドは 2 つの引数を取ります。
- リモート名 (例:
origin
) - リモート URL (例:
https://[ホスト名]/user/repo.git
)
たとえば次のような点です。
$ git remote add origin https://ホスト名/USER/REPO.git
# Set a new remote
$ git remote -v
# Verify new remote
> origin https://ホスト名/USER/REPO.git (fetch)
> origin https://ホスト名/USER/REPO.git (push)
使用する URL の詳細については、「リモート リポジトリについて」を参照してく� さい。
トラブルシューティング: リモート配信元が既に存在します
このエラーは、ローカルのリポジトリに既に存在している名前でリモートを追� しようとしたということです。
$ git remote add origin https://ホスト名/octocat/Spoon-Knife.git
> fatal: remote origin already exists.
この問題を解決するには、以下を実行してく� さい。
- 新しいリモートに別の名前を使う。
- 新しいリモートを追� する前に、既存のリモート リポジトリの名前を変更する。 詳細については、下記の「リモート リポジトリの名前を変更する」を参照してく� さい。
- 新しいリモートを追� する前に、既存のリモート リポジトリの名前を削除する。 詳細については、下記の「リモート リポジトリの削除」を参照してく� さい。
リモート リポジトリの URL の変更
git remote set-url
コマンドは、既存のリモート リポジトリ URL を変更します。
ヒント: HTTPS と SSH の URL の違いについては、「リモート リポジトリについて」を参照してく� さい。
git remote set-url
コマンドは 2 つの引数を取ります。
- 既存のリモート名。 たとえば、
origin
やupstream
の 2 つが一般的な選択肢です。 - リモートの新しい URL。 たとえば次のような点です。
- HTTPS を使うよう更新する� �合、URL は以下のようになります:
https://[ホスト名]/USERNAME/REPOSITORY.git
- SSH を使うよう更新する� �合、URL は以下のようになります:
git@ホスト名:USERNAME/REPOSITORY.git
- HTTPS を使うよう更新する� �合、URL は以下のようになります:
リモート URL の SSH から HTTPS への切り替え
- [ターミナル][ターミナル][Git Bash] を開きます。
- ワーキングディレクトリをローカルプロジェクトに変更します。
- 変更したいリモートの名前を取得するため、既存のリモート一覧を表示します。
$ git remote -v > origin git@ホスト名:USERNAME/REPOSITORY.git (fetch) > origin git@ホスト名:USERNAME/REPOSITORY.git (push)
git remote set-url
コマンドを使用して、リモートの URL を SSH から HTTPS に変更します。$ git remote set-url origin https://ホスト名/USERNAME/REPOSITORY.git
- リモート URL が変更されたことを検証します。
$ git remote -v # Verify new remote URL > origin https://ホスト名/USERNAME/REPOSITORY.git (fetch) > origin https://ホスト名/USERNAME/REPOSITORY.git (push)
次回、リモート リポジトリに git fetch
、git pull
、git push
を実行すると、GitHub のユーザー名とパスワードの入力を求められます。 Git からパスワードの入力するダイアログが表示されたら、personal access token を入力します。 または、Git Credential Manager などの資� �情� �ヘルパーを使用することもできます。より安全な認証方法を優先して、Git のパスワードベースの認証が削除されました。詳しくは、「personal access token の作成」を参照してく� さい。
資� �情� �ヘルパーを使用して、Git が GitHub と通信するたびに、GitHub ユーザー名と personal access token を記憶させることができます。
リモート URL の HTTPS から SSH への切り替え
- [ターミナル][ターミナル][Git Bash] を開きます。
- ワーキングディレクトリをローカルプロジェクトに変更します。
- 変更したいリモートの名前を取得するため、既存のリモート一覧を表示します。
$ git remote -v > origin https://ホスト名/USERNAME/REPOSITORY.git (fetch) > origin https://ホスト名/USERNAME/REPOSITORY.git (push)
git remote set-url
コマンドを使用して、リモートの URL を HTTPS から SSH に変更します。$ git remote set-url origin git@ホスト名:USERNAME/REPOSITORY.git
- リモート URL が変更されたことを検証します。
$ git remote -v # Verify new remote URL > origin git@ホスト名: USERNAME/REPOSITORY.git (fetch) > origin git@ホスト名: USERNAME/REPOSITORY.git (push)
トラブルシューティング: このようなリモート '[name]' はありません
このエラーは、変更しようとしたリモートが存在しないことを意味します。
$ git remote set-url sofake https://ホスト名/octocat/Spoon-Knife
> fatal: No such remote 'sofake'
リモート名を正しく入力したか確認してく� さい。
リモート リポジトリの名前を変更する
git remote rename
コマンドを使用して、既存のリモートの名前を変更します。
git remote rename
コマンドは 2 つの引数を取ります。
- 既存のリモート名 (例:
origin
) - リモートの新しい名前 (例:
destination
)
例
これらの例では、HTTPS を使用して複製することを前提としています (推奨)。
$ git remote -v
# View existing remotes
> origin https://ホスト名/OWNER/REPOSITORY.git (fetch)
> origin https://ホスト名/OWNER/REPOSITORY.git (push)
$ git remote rename origin destination
# Change remote name from 'origin' to 'destination'
$ git remote -v
# Verify remote's new name
> destination https://ホスト名/OWNER/REPOSITORY.git (fetch)
> destination https://ホスト名/OWNER/REPOSITORY.git (push)
トラブルシューティング: 構成セクションの 'remote.[古い名前]' を 'remote.[新しい名前]' に変更できませんでした
このエラーは、入力した古いリモート名が存在しないことを意味します。
git remote -v
コマンドを使用すると、現在存在するリモートを確認できます。
$ git remote -v
# View existing remotes
> origin https://ホスト名/OWNER/REPOSITORY.git (fetch)
> origin https://ホスト名/OWNER/REPOSITORY.git (push)
トラブルシューティング: リモート [新しい名前] は既に存在します
このエラーは、使用しようとしたリモート名がすでに存在する、という意味です。 これを解決するには、別のリモート名を使用するか、または元のリモートの名前を変更するかのいずれかです。
リモート リポジトリを削除する
git remote rm
コマンドを使用して、リポジトリからリモート URL を削除します。
git remote rm
コマンドは、次の 1 つの引数を受け取ります。
- リモート名 (例:
destination
)
リポジトリからリモート URL を削除すると、ローカルおよびリモート リポジトリのリンクのみが解除されます。 リモート リポジトリは削除されません。
例
これらの例では、HTTPS を使用して複製することを前提としています (推奨)。
$ git remote -v
# View current remotes
> origin https://ホスト名/OWNER/REPOSITORY.git (fetch)
> origin https://ホスト名/OWNER/REPOSITORY.git (push)
> destination https://ホスト名/FORKER/REPOSITORY.git (fetch)
> destination https://ホスト名/FORKER/REPOSITORY.git (push)
$ git remote rm destination
# Remove remote
$ git remote -v
# Verify it's gone
> origin https://ホスト名/OWNER/REPOSITORY.git (fetch)
> origin https://ホスト名/OWNER/REPOSITORY.git (push)
注: git remote rm
リモート リポジトリをサーバーから削除しないでく� さい。 リモートとその参照がローカル リポジトリから削除される� けです。
トラブルシューティング: 構成セクションの 'remote' [名前]' を削除できませんでした。
このエラーは、削除しようとしたリモートが存在しないことを意味します。
$ git remote rm sofake
> error: Could not remove config section 'remote.sofake'
リモート名を正しく入力したか確認してく� さい。
参考資料
- Pro Git ブックの "リモートの操作"