Shiraude Code Docs
用語2026年10月6日Gitgit configgit pushリモートリポジトリフォーク

remote.pushDefaultって何?push先を変える設定

ひとことで言うと「pushの行き先を指定する設定」

remote.pushDefault は Git の設定項目のひとつで、git push と打ったときに、どのリモートリポジトリへ送るかを決めるものです。

普段 git push とだけ打っていると、たいていは origin というリモートに送られます。この「黙っていると origin に行く」という挙動を、「黙っていると別のリモートに行く」に変えられるのが remote.pushDefault です。

そもそも「リモート」って何だっけ

Git では、手元のリポジトリに対して「このURLのリポジトリを origin という名前で覚えておいてね」という登録ができます。この登録名がリモート名です。git clone したときに自動で付けられる名前が origin なので、多くの人は origin しか見たことがないかもしれません。

でも、リモートは複数登録できます。たとえば OSS に貢献するときは、本家のリポジトリを upstream、自分のフォークを origin として登録する、といった使い方をよくします。

郵便物の「差出先」に例えると

手紙を出すとき、封筒に宛先を書かずにポストに入れたらどこにも届きませんよね。でも「この家から出る手紙は、特に指定がなければ実家に送る」という取り決めがあったとしたら、宛先を書かなくても実家に届きます。

remote.pushDefault はまさにこの「特に指定がなければどこに送るか」の取り決めです。Git はデフォルトでは origin を宛先にしますが、この設定を入れておけば「指定がないときは myfork に送る」といった変更ができます。

どう設定するか

Git の設定なので、git config コマンドで設定します。

# このリポジトリだけで有効
git config remote.pushDefault myfork

# 全リポジトリ共通で有効
git config --global remote.pushDefault myfork

設定されている値を確認したいときはこうします。

git config --get remote.pushDefault

何も表示されなければ未設定、つまり通常どおりの挙動です。

「push先」と「pull元」は別物

ここが地味につまずくポイントなんですが、remote.pushDefault が影響するのはpush、つまり送る方向だけです。fetch や pull で「どこから取ってくるか」は変わりません。

取ってくるとき(fetch / pull)

ブランチごとに紐づいたリモート(upstream)から取得する。remote.pushDefault の影響を受けない。

送るとき(push)

明示的にリモート名を書かなければ remote.pushDefault の指すリモートへ送られる。

「本家から最新を取ってきて、自分のフォークに送る」という OSS 貢献の流れと、この分離はきれいに噛み合います。取得元と送信先が違っていいわけです。

設定していても、明示指定が優先

remote.pushDefault を設定していても、コマンドで直接リモート名を書けばそちらが優先されます。

# 設定に関係なく origin に送る
git push origin main

なので「設定したせいで二度と origin に push できなくなった」みたいなことにはなりません。あくまで省略時の既定値です。

どんなときに使うと嬉しいか

一番わかりやすいのは、本家リポジトリに直接 push する権限がないケースです。本家を origin のまま残しておきたいけれど、push は自分のフォークにしたい。こういうときに remote.pushDefault を自分のフォーク側に向けておくと、毎回リモート名を打たなくて済みます。

逆に言うと、リモートが origin ひとつしかない普通の開発では、この設定を触る必要はほぼありません。「複数リモートを扱い始めたときに思い出す設定」くらいの位置づけで覚えておけば十分です。

事故を防ぐための注意

便利な反面、自分がどこに push しているか見えにくくなるという副作用があります。特に --global で設定してしまうと、別のリポジトリで作業しているときにも効いてしまい、「あれ、origin に上がってない」と混乱するもとです。

迷ったらリポジトリ単位(--global なし)で設定するのが安全です。どうしても不安なら、push する前に git remote -v でリモート一覧を眺めて、設定値と突き合わせる癖をつけておくといいでしょう。

このページは役に立ちましたか?