環境構築
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。
この解決法は役立ちましたか?
🔗 関連するエラー
- Your branch is behind — リモートに新しいコミットがある
- refusing to merge unrelated histories — 関連のない履歴をマージしようとしている
- error: Your local changes would be overwritten by checkout / merge — コミットしていない変更が消えるのをGitが防いでいる
- fatal: unable to access — リモートリポジトリに接続できない
- Permission denied (publickey) — SSH鍵が設定されていない
📖 この問題を学べるレッスン
✏️ 手を動かして練習
📝 関連ブログ記事
- プログラミングのエラーメッセージの読み方 — エラーの読み方を基礎から解説
- VS Codeのインストール方法 — インストールと初期設定を図解で解説
- プログラミング初心者が最初にやるべきこと5選 — 目的を決めて環境構築から