Git リモートへのプッシュ時に発生する 'fatal: The current branch has no upstream branch' の修正方法

beginner📦 Git2026-05-05| Git 2.x — すべてのOS(Linux、macOS、Windows)、すべてのリモート(GitHub、GitLab、Bitbucket、セルフホスト)

Error Message

fatal: The current branch feature/my-branch has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin feature/my-branch
#git#push#upstream#branch#remote

何が起きたのか

新しいローカルブランチを作成して git push を実行したところ、次のエラーが表示されました:

fatal: The current branch feature/my-branch has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin feature/my-branch

このブランチは作成したばかりで、一度もプッシュされていません。Gitはどのリモートブランチと通信すべきか分かっていないのです。mainmaster のようなブランチはリモートとあらかじめ紐付けられていることが多いですが、ローカルで作成したブランチは、明示的に設定するまでアップストリームのマッピングが存在しません。

今すぐ直す方法

Gitがすでに答えを教えてくれています。そのまま実行しましょう:

git push --set-upstream origin feature/my-branch

または、日常的によく使われる短縮形:

git push -u origin feature/my-branch

どちらも同じ動作をします。ブランチが origin にプッシュされ、Gitがそのマッピングを記憶します。以降、このブランチで git pushgit pull を実行するたびに、追加のフラグなしで動作するようになります。

ブランチ名を入力したくない場合

代わりに HEAD を使いましょう:

git push -u origin HEAD

HEAD は常に現在チェックアウトしているブランチを指します。ブランチ名が fix/PROJ-2847-auth-token-expiry のように長い場合に便利です。

修正が正しく適用されたか確認する

プッシュ後に次のコマンドを実行してください:

git branch -vv

角括弧内にリモートトラッキング参照が表示されているか確認します:

* feature/my-branch  a1b2c3d [origin/feature/my-branch] コミットメッセージ

角括弧が表示されていない場合、アップストリームはまだ設定されていません。git status でも確認できます。正しくトラッキングされているブランチには、「Your branch is up to date with 'origin/feature/my-branch'」 のような表示が出ます。

-u を二度と入力しない — 恒久的な解決策

週に何度も新しいブランチをプッシュするなら、毎回このフラグを入力するのは面倒です。グローバル設定を一つ変更するだけで、この問題を完全になくせます:

git config --global push.autoSetupRemote true

この設定以降、新しいブランチで普通に git push を実行するだけで、自動的にプッシュされてアップストリームが設定されます。フラグ不要。手間なし。ただし、この機能には Git 2.37 以降(2022年7月リリース)が必要です。

まずバージョンを確認しましょう:

git --version

古いバージョンを使っている場合は、代わりにこちらを使ってください:

git config --global push.default current

ローカルブランチと同じ名前のリモートブランチにプッシュします。ただし、アップストリームのトラッキング参照は記録されません。引数なしで git pull を使うには、一度だけ -u が必要です。それでも、プッシュ自体が失敗することはなくなります。

リモートが複数ある場合

フォークを使って作業している場合、origin(自分のフォーク)と upstream(元のリポジトリ)の2つのリモートがあることが多いです。どちらにプッシュするかを明示しましょう:

# 現在のリモートを確認する
git remote -v

# 自分のフォークにプッシュする
git push -u origin feature/my-branch

# 元のリポジトリにプッシュする(書き込み権限がある場合)
git push -u upstream feature/my-branch

プッシュせずにリンクする方法

チームメンバーが作成したブランチや、引き継いだ作業のブランチなど、リモートブランチがすでに存在する場合もあります。その場合はプッシュ不要です。ローカルブランチをリモートブランチに紐付けるだけでOKです:

git branch --set-upstream-to=origin/feature/my-branch

短縮フラグ版:

git branch -u origin/feature/my-branch

git fetch 実行後にこれを使うと、余分なコミットやプッシュなしでリモートブランチをトラッキングできます。

まとめ

  • 新しいローカルブランチにはアップストリームがなく、Gitは自動でプッシュしません。
  • 即時対処:git push -u origin HEAD
  • 恒久的な解決策(Git 2.37+):git config --global push.autoSetupRemote true
  • 確認方法:git branch -vv

Related Error Notes