Gitで1つのローカルリポジトリに対して、複数のリモートリポジトリを設定する方法について解説します。
新しいリモートリポジトリの作成
現在のリモートリポジトリを確認する
まず、現在設定されているリモートリポジトリを確認します。
git remote -vこれでoriginやupstreamなど、現在設定されているリモートリポジトリの一覧が表示されます。
Githubなどで新しいリモートリポジトリを追加する
GitHubで新しいリポジトリを作成したら、そのURLを使ってローカルに追加します。新しいリポジトリは空の状態で作成してください。READMEなどは追加しないようにします。
git remote add backup <a href="mailto:git@github.com">git@github.com</a>:ユーザー名/リポジトリ名.gitbackupの部分は任意の名前で構いません。自分が管理しやすい名前を付けましょう。
追加されたか確認する
再度リモートリポジトリの一覧を確認します。
git remote -vorigin、upstream、backupなど、複数のリモートリポジトリが表示されれば成功です。
push
それぞれのリモートにプッシュする
プッシュする際は、リモート名を指定します。
git push origin main
git push backup mainこのように、リモート名を指定することで、それぞれのリポジトリに個別にプッシュできます。

プッシュとプルでデフォルトのリモートリポジトリを設定する
デフォルトのリモートリポジトリを設定しておくと、毎回リモート名を指定する必要がなくなります。
初回のみ設定が必要
git push -u origin mainこの設定を一度行えば、次回以降は以下のコマンドだけで済みます。
git push
git pullデフォルトを変更したい場合
別のリモートをデフォルトにしたい場合は、再度-uオプションを使います。
git push -u backup main基本的にはoriginをデフォルトとして設定し、backupなど他のリモートには明示的にリモート名を指定してプッシュすることをおすすめします。これにより、意図しないリモートにプッシュしてしまうミスを防げます。
ユーザー情報とプライバシーについて
複数のリモートリポジトリを設定しても、ユーザー情報は共有されません。コミット時に記録されるユーザー名とメールアドレスは、どのリモートにプッシュしても同じものが使われます。
git config user.name git config user.email
コミット履歴に残るのは、プッシュ時ではなくコミット時のユーザー情報です。
メールアドレスを非公開にする方法
リポジトリをプライベートにしても、コミット履歴のメールアドレスは隠れません。メールアドレスを非公開にしたい場合は、GitHubの設定が必要です。
GitHubのSettings→Emailsから「Keep my email addresses private」にチェックを入れると、GitHubが提供する匿名メールアドレスが表示されます。
123456+username@users.noreply.github.com
このアドレスをローカルのGit設定に反映させます。
git config user.email “123456+username@users.noreply.github.com“
プライベートリポジトリのアクセス範囲
プライベートリポジトリは招待した人だけがアクセスできます。アクセスできる人は、コミット履歴やメールアドレスも確認できます。完全に非公開にしたい場合は、メール非公開設定とプライベートリポジトリの両方を設定することをおすすめします。
リモートリポジトリ間の独立性
originのGitHubリポジトリからは、他のリモートリポジトリ(backupなど)の存在や、そこにプッシュしているかどうかは確認できません。git remote -vで表示される情報は、あなたのローカル環境だけが持っている情報です。それぞれのリモートリポジトリは完全に独立しています。