git - remote add origin vs remote set-url origin

新しいリポジトリを作成します。

git init
echo "# MESSAGE" >> README.md
git add README.md
git commit -m "first commit"

そして、github上に作成された空のリモートリポジトリにコミットをプッシュしたいので、remoteを設定しなければなりません。

以下のコマンドの違いは何でしょうか?

git remote add origin git@github.com:User/UserRepo.git
git remote set-url origin git@github.com:User/UserRepo.git

最後にpushを行います。

git push -u origin master

編集1:

git initの直後にremote set-url originを実行するとどうなりますか?remote set-url origin は origin を作りますか?もし、git init後にすでにoriginが存在しているのであれば、私のシナリオではこれらのコマンドを使っても違いはありませんよね?

以下は、新しいリモートを追加するために使用します。

git remote add origin git@github.com:User/UserRepo.git

以下は、既存のリモートリポジトリのURLを変更するために使用します。

git remote set-url origin git@github.com:User/UserRepo.git

below は origin-u で定義されたリモートリポジトリの master ブランチにコードをプッシュします。-u は現在のローカルブランチをリモートの master ブランチに向けることができます。

git push -u origin master

[Documentation][1]

[1]: https://git-scm.com/docs/git-remote

解説 (4)
  • git remote add origin git@github.com:User/UserRepo.git を実行すると、origin という名前の新しいリモートが作成されます。
  • git remote set-url origin git@github.com:User/UserRepo.git を実行すると、git は origin という名前の既存のリモートを検索し、そのリモートリポジトリの URL を変更します。もし git が origin という名前のリモートを見つけられなかった場合は、エラー fatal: No such remote 'origin' を発生させます。

新しいリポジトリを作成する場合は、git remote add origin git@github.com:User/UserRepo.git を使ってリモートを追加します。

解説 (3)

新しいリモートを追加するには、ターミナルで、リポジトリが保存されているディレクトリで、git remote addコマンドを使います。

git remote set-url` コマンドは,既存のリモートリポジトリの URL を変更します.

つまり、基本的には、remote add は新しいリモートを追加し、remote set-url は既存のリモートを更新します。

解説 (0)