← エラー辞典に戻る

環境構築

error: failed to push some refs

pushが拒否された

こんな症状

リモートに自分が持っていない変更がある。先にpullしてからpushしよう。

まず試す

git pull origin main で最新を取り込み、コンフリクトがあれば解決してからもう一度 push する。

env
# 最新を取り込んでから push
git pull origin main
# コンフリクトがあれば解決して add / commit
git push origin main

これで直らなければ、下の「自分のケース」を確認。

🔍 自分のケースはどれ?

  • チームの誰かが先に push した
    → git pull origin main(--rebase で履歴一直線)→ 解決 → git push。
  • リポジトリ作成時に README を追加した
    → git pull origin main --allow-unrelated-histories で履歴を結合してから push。
  • pull でコンフリクトが出た
    → 該当ファイルを直して git add → continue/commit → push。

なぜ起きる?

リモートリポジトリに、ローカルにない新しいコミットがあるよ。よくあるのは2パターン。(1) リポジトリ作成時に『Add a README file』にチェックを入れたため、リモートに自分が持っていないコミットが最初からある。 (2) チーム開発で他の人が先にpushした。どちらもGitが「上書き事故を防ぐために、まず取り込んで」と言っている状態だよ。

✕ エラーが起きるコード
git push origin main
# error: failed to push some refs to 'origin'
# hint: Updates were rejected because the remote contains work that you do not have locally.
✓ 直したコード
# 最新を取り込んでからpush
git pull origin main
# コンフリクトがあれば解決して
git add .
git commit -m "merge remote changes"
git push origin main

✅ 直ったか確認

git push がエラーなく完了し、GitHub上に反映されればOK。

🆘 まだ直らないときは

強制 push(git push -f)は他人の履歴を消すので、共有ブランチでは避ける。

Q&Aで質問する →

この解決法は役立ちましたか?

🔗 関連するエラー

📖 この問題を学べるレッスン

Gitレッスン3:GitHubに公開で根本から理解する →

✏️ 手を動かして練習

このテーマの図解ドリルで実際に書いて確認する →

📝 関連ブログ記事

📖 関連する用語

🚀 Gitレッスン3:GitHubに公開で根本解決しよう!

このエラーの背景にある仕組みを、手を動かしながら学べるレッスンがあります。完全無料・登録不要。

Gitレッスン3:GitHubに公開へ →

❓ 関連するQ&A