git pushしたらrejectedエラーが出る

Git 📅 2026年5月1日 👤 学習者さん

💬 質問

git push を実行したら rejected というエラーが出ました。どうすれば解決できますか?

✅ 回答

このエラーは初心者がとてもよく遭遇するものです。落ち着いて対処しましょう。

エラーメッセージ

! [rejected] main -> main (fetch first)
error: failed to push some refs to '...'

原因

GitHubのリポジトリに、ローカルにないコミットが存在しています。最も多いのはリポジトリ作成時に「Add a README file」にチェックを入れたケースです。

解決方法1:pull してから push

git pull --rebase origin main
git push origin main

これでリモートの変更を取り込んでから、自分の変更を送信できます。

解決方法2:リポジトリを作り直す(新規の場合)

まだ始めたばかりなら、GitHubでリポジトリを削除してREADMEなしで作り直すのが最も簡単です。

git remote set-url origin https://github.com/ユーザー名/リポジトリ名.git
git push -u origin main

まとめ:新しいリポジトリを作るときは「Add a README file」のチェックを外しましょう。エラーが出たら git pull --rebase origin main で解決できます。

原因2:チームメンバーが先にpushした

学園祭サイトをチームで作っているとき、友達が先にpushすると自分のpushがrejectedになります。これはGitが「リモートに知らない変更がある」と教えてくれているだけで、エラーではありません。

# 友達の変更を取り込んでから自分の変更をpush
git pull origin main
git push origin main

# コンフリクトが出たら手動で解決してcommit
git add .
git commit -m "resolve conflict"
git push origin main

原因3:権限エラー(403 / permission denied)

rejectedではなく「403 Forbidden」や「Permission denied」が出る場合は、リポジトリへの書き込み権限がありません。

確認方法:GitHubのリポジトリ → Settings → Collaborators で自分が追加されているか確認。追加されていなければリポジトリのオーナーに招待してもらいましょう。

pull --rebase と pull(merge)の違い

git pull(merge):リモートの変更と自分の変更を「マージコミット」で合流させる。履歴が分岐して見える。

git pull --rebase:リモートの変更の「後ろ」に自分のコミットを並べ直す。履歴が一直線になってきれい。

初心者へのおすすめ:git pull --rebase を使いましょう。履歴がシンプルになり、チーム開発でも見やすくなります。

force push は最終手段

git push --force はリモートの履歴を強制的に上書きします。チームメンバーの変更が消える可能性があるので、基本的に使わないでください。

どうしても必要な場合は git push --force-with-lease を使いましょう。他の人がpushしていた場合は拒否してくれるので、少し安全です。

中高生あるある:学園祭サイトをチームで作っている

学園祭サイトを3人で作っていて、Aさんがpushした後にBさんがpushしようとするとrejectedになります。これは正常な動作です。Bさんはgit pull origin mainで Aさんの変更を取り込んでからpushしましょう。

コンフリクト(同じファイルの同じ行を編集した場合)が起きたら、VS Codeが「Accept Current Change」「Accept Incoming Change」「Accept Both Changes」のボタンを表示してくれます。どちらの変更を残すか選んで保存し、commitしてからpushしましょう。

rejectedを防ぐ習慣

1. 作業を始める前に必ず git pull する

2. こまめにcommit&pushする(大きな変更を溜めない)

3. チームで「誰がどのファイルを編集するか」を事前に決める

これらを守れば、rejectedエラーに遭遇する頻度を大幅に減らせます。

解決しなかった?

エンジニアに質問する →

📖 関連する用語