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(個人用アクセストークン)に切り替える方法が手早く解決できます。

  1. GitHubの Settings → Developer settings → Personal access tokens → Generate new token
  2. repo にチェックを入れてトークンを生成し、コピーしておく
  3. 次にgit pushする時、ユーザー名にGitHubのID、パスワードの欄に発行したトークンを貼り付ける
  4. 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
  • いきなりは不安な方へ:無料の教材体験版もあります(最初の数セッション分)→ プラン詳細をご覧ください