git pushで詰まる2つのエラー、原因と直し方
git pushを実行したら見慣れないエラーで止まった——Gitを使い始めたばかりの頃によく出会う場面です。今回は、詰まりやすい2つのエラーを取り上げて、それぞれの原因と直し方をまとめます。
パターン① Permission denied (publickey)
Before(詰まっている状態)
git@github.com: Permission denied (publickey).
pushしようとしたら、いきなりこのエラー。「publickey」という見慣れない単語のせいで、何をすればいいのか見当がつきません。
原因
GitHubにSSH鍵が登録されていないか、HTTPS経由でのパスワード認証が失敗している状態です。
After(直った状態)
SSHの設定を直接いじるより、HTTPS + Personal Access Token(個人用アクセストークン)に切り替える方法が手早く解決できます。
- GitHubの Settings → Developer settings → Personal access tokens → Generate new token
repoにチェックを入れてトークンを生成し、コピーしておく- 次に
git pushする時、ユーザー名にGitHubのID、パスワードの欄に発行したトークンを貼り付ける - Macなら、次回以降はキーチェーンに保存されて入力不要になる
パターン② non-fast-forward
Before(詰まっている状態)
! [rejected] main -> main (non-fast-forward)
さっきまで普通にpushできていたのに、急にこのエラーで拒否されるようになります。
原因
GitHub側のmainブランチが、自分の手元の状態より先に進んでいる状態です。複数の場所(自分のPC、別のPC、GitHub上の直接編集など)から同じブランチにpushすると起こります。
After(直った状態)
git pull --rebase origin main
git push origin main
先に相手側の変更を取り込んでから、もう一度pushします。この時、自分の変更と相手の変更が同じ行を触っていると「コンフリクト(競合)」が起きることがあります。コンフリクトの中身の読み方は以前noteで詳しく書いたので、ここでは省略しますが、起きたらそのままAIに相談すれば大丈夫です。
AIへの聞き方
どちらのエラーも、エラーメッセージをそのまま貼るのが一番早いです。
git pushで下記のエラーが出ました。
何が原因で、どう直せばいいか教えてください。
(ここにエラーメッセージを貼る)
「pushできません」とだけ伝えるより、エラーメッセージの全文を渡した方が、原因を一発で特定してもらいやすくなります。コンフリクトが起きた場合も、「git rebaseでコンフリクトが出た、解決を手伝って」とそのまま聞けば大丈夫です。
こうしたエラーとの付き合い方に慣れることは、プログラミングの技術そのものだけでなく、AIに何をどう伝えれば的確な答えが返ってくるかという、AI協働の力を鍛える練習にもなります。この力は、Web開発以外の場面でも一生使えるスキルです。
面談なしで、今日から始められます
この講座は 未経験から Next.js + Supabase + Claude Code で Webアプリを公開するまで を全24セッションで体系化した教材付きプランです。無料相談を挟まず、申し込んだその日から教材で学習を始められます。AIが学習パートナーになって何度でも質問でき、つまずいた所だけチャットで直接サポートします。
- 今日から始める(教材完全版+月5,500円・チャット質問し放題・いつでも解約OK)→ https://menta.work/plan/20251?ref=menta-knowledge
- いきなりは不安な方へ:無料の教材体験版もあります(最初の数セッション分)→ プラン詳細をご覧ください

