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 しましょう。