複数のリモートリポジトリを設定する方法

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>:ユーザー名/リポジトリ名.git

backupの部分は任意の名前で構いません。自分が管理しやすい名前を付けましょう。

追加されたか確認する

再度リモートリポジトリの一覧を確認します。

git remote -v

origin、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で表示される情報は、あなたのローカル環境だけが持っている情報です。それぞれのリモートリポジトリは完全に独立しています。