git push rejectedエラー

📝 問題の再掲

Q20: git push で「error: failed to push some refs」が出る原因として多いのは?

正答: GitHubのリポジトリ作成時にREADMEを追加してしまった

⚠️ よくある間違い

「何か壊れた」「Gitが使えなくなった」と思いがちですが、これは正常な動作です。Gitが「リモートにあなたの知らない変更があるよ」と教えてくれています。

📖 段階的な説明

ステップ1:エラーメッセージを読む

! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://github.com/...'
hint: Updates were rejected because the remote contains work
hint: that you do not have locally.

「リモートにあなたのローカルにない変更がある」という意味です。

ステップ2:なぜ起きるのか

GitHubでリポジトリを作るとき「Add a README file」にチェックを入れると、GitHub上にコミットが作られます。ローカルにはそのコミットがないため、push が拒否されます。

ステップ3:解決方法

リモートの変更を取り込んでから push します。

💻 コード例

# 解決方法1: pull してから push
git pull --rebase origin main
git push origin main

# 解決方法2: リポジトリを作り直す(初心者向け)
# GitHubで「Add a README file」のチェックを外して新規作成
git remote set-url origin https://github.com/ユーザー名/リポジトリ名.git
git push -u origin main

# ⚠️ 解決方法3: 強制push(危険・最終手段)
# git push --force origin main
# → リモートの変更が消えるので、チーム開発では絶対に使わない

🔗 関連知識

  • 予防策:新しいリポジトリを作るときは「Add a README file」のチェックを外す
  • git pull --rebase は「リモートの変更の上に自分の変更を載せ直す」操作です

✅ 確認問題

Q: rejected エラーを防ぐために、GitHubでリポジトリを作るとき気をつけることは?

答えを見る

「Add a README file」のチェックを外して空のリポジトリを作ることです。READMEは後からローカルで作って push しましょう。

← ドリルに戻る