プログラミングの学習が進み、自分のコードをGithubで管理しようとしたときに、多くの人が最初にぶつかる大きな壁が「VSCodeからGitHubにpush(送信)できない」というトラブルです。
「VSCodeの画面でボタンを押したのにエラーが表示されて進まない」「ターミナルに英語の長文が出てきて意味がわからない」と、途方に暮れていないでしょうか。
GitやGitHubの仕組みは、概念が少し複雑なため、初心者のうちはどこに原因があるのかを見極めるのが困難です。しかし、トラブルシューティングの手順を踏めば、どんなエラーも必ず解決できます。
本記事では、VSCodeからGithubへのpushに失敗する原因と具体的な対処法を徹底的に解説します。この記事を読めば、エラーの正体がわかり、安心して元の開発作業に戻れるようになるはずです。
VSCodeからGithubにpushできない主な原因
「pushボタンを押してもエラーになる」「ターミナルが真っ赤になって進まない」という状況に陥ったとき、パニックになる必要はありません。VSCodeからGitHubへのpushが失敗する原因は、大きく分けると以下の5つのいずれかに絞られます。
- Gitの初期設定ミス:パソコン本体のGit設定や、VSCodeとの連携がうまくいっていない。
- 認証エラー(Authentication Failed):GitHubのパスワードや、ログイン情報の認証に失敗している。
- リモートリポジトリ(GitHub側)の設定ミス:URLの間違いや、アクセス権限がない。
- push先の競合(Rejected / 衝突):GitHub側のコードと、手元のコードにズレがあり、そのままでは上書きできない。
- GitHub側の設定問題:リポジトリが正しく作られていない、あるいは設定が噛み合っていない。
Gitは非常に厳格なシステムなので、設定が1文字でも違ったり、手順が1つでも抜けていたりすると、セキュリティのために接続を遮断します。裏を返せば、「どこが噛み合っていないか」さえ特定できれば、あっさりと解決することがほとんどです。まずは、最も基本的なチェック項目から順番に確認していきましょう。
まず確認したい基本項目
エラーメッセージを読み解く前に、まずはすべての土台となる「基本の4項目」を確認します。
Gitがインストールされているか
そもそも、お使いのパソコンに「Git」というソフトウェア自体がインストールされていますでしょうか。
VSCodeはGitを使いやすく操作するための画面(インターフェース)を提供しているだけであり、Git本体はパソコンに別途入っている必要があります。
確認するには、VSCodeのターミナル(Ctrl + Jで開きます)で以下のコマンドを入力してください。
git --version

上記画像のように、git version 2.x.xのように数字が表示されれば問題ありません。「コマンドが見つかりません」といった英語が出る場合は、Git本体がインストールされていないか、パソコンへのパスが通っていません。公式サイトからGitをダウンロードしてインストールし、VSCodeを再起動してください。
Githubにログインできているか
VSCodeとGitHubが正しく連携されているか確認しましょう。
VSCodeの画面左下にある「人の形をしたアイコン(アカウント)」をクリックしてみてください。ここに、ご自身のGitHubアカウント名が表示されていますでしょうか。
もし「サインインして同期を入れる」などの表示が出ている場合は、VSCodeがGitHubにアクセスする許可を持っていません。ここから画面の指示に従ってGitHubにログインし、連携を完了させてください。
リポジトリが作成されているか
手元のファイルを送る先となる「リポジトリ(保管庫)」が、Githubのウェブサイト上で事前に作成されている必要があります。
GitHubにログインし、マイページから送信先となるリポジトリが確かに存在するかどうかを確認してください。空のリポジトリを作る際、URL([https://github.com/ユーザ名/リポジトリ名.git](https://github.com/ユーザ名/リポジトリ名.git))が発行されているはずです。これが手元にありますか?
VSCodeでフォルダを正しく開いているか
Gitは「フォルダ単位」で変更履歴を管理します。 VSCodeでファイルを1枚だけドラッグ&ドロップして開いている状態では、Gitは正しく動作しません。必ず画面左上の「ファイル」>「フォルダーを開く」から、.gitファイル(Gitの設定ファイル)が含まれているプロジェクトのフォルダ全体を開いてください。
authentication failed エラーが出る場合
ターミナルにfatal: Authentication failed for ‘

パスワード認証ではなくトークン認証が必要
現在、GitHubはセキュリティ向上のため、通常のログインパスワードを使ったGit操作(pushやpull)を完全に禁止しています。
以前のやり方のまま、パスワードを入力してpushしようとすると必ずこのエラーになります。代わりに「個人アクセストークン(PAT: Personal Access Token)」を発行するか、後述するVSCodeの拡張機能を使ったブラウザ連携ログインを行う必要があります。
GitHubアカウント再ログイン
最も手軽で間違いがない解決策は、VSCodeの機能を使ってGitHubへのログイン情報をリフレッシュすることです。
- VSCode左下のアカウントアイコンをクリックし、一度ログアウト(サインアウト)します。
- 再度ログインを選択すると、ブラウザが立ち上がり「VSCodeにGitHubへのアクセスを許可しますか?」と聞かれます。
- 許可(Authorize)を押すと、最新の安全な認証情報(トークン)がVSCodeに自動でセットされます。
これにより、面倒なパスワードやトークンの手入力をすることなく、認証エラーを回避できます。
認証情報の削除と再設定
上記を試してもエラーが消えない場合、お使いのパソコン(OS)が「古い間違ったパスワード」を記憶してしまっている可能性があります。
- Windowsの場合: スタートメニューから「資格情報マネージャー」を開き、「Windows 資格情報」の中にあるgit:
(https://github.com)の項目を探して削除します。
GitHub · Change is constant. GitHub keeps you ahead.Join the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the la... - Macの場合: キーチェーンアクセス(Keychain Access)を開き、github.comに関連するインターネットパスワードを検索して削除します。
古い情報を削除した後にVSCodeから再度pushを試みると、新しいログイン情報を求められるため、そこで最新の情報を入力(またはブラウザ連携)すれば解決します。
permission denied エラーが出る場合
fatal: Permission to ユーザ名/リポジトリ名.git denied to 別のユーザ名. またはPermission denied (publickey) というエラーが出るケースです。これは「場所はわかったけれど、お前はそこに入る権限がない」という意味です。
SSHキー設定確認
GitHubへの接続方法として「SSH(エスエスエイチ)」を選択している場合、このエラーが多発します。
手元のパソコンで生成した「公開鍵」が、GitHubのマイページの設定(Settings > SSH and GPG keys)に正しく登録されているか確認してください。
また、鍵のアクセス権(パーミッション)が緩すぎる場合、安全のために接続が拒否されます。ターミナルでssh -T git@github.comを実行し、Hi [ユーザ名]! You’ve successfully authenticatedと返ってくるかテストしてみましょう。
リポジトリ権限確認
学校の課題や、会社のプロジェクト、共同開発など、「他人が作ったリポジトリ」にpushしようとしていませんか? GitHubのリポジトリは、デフォルトでは作った本人しか書き込み(push)ができません。他人のリポジトリに送信するには、そのリポジトリの設定画面から、あなたのGitHubアカウントを「Collaborator(共同開発者)」として招待してもらう必要があります。招待を受け取って承諾するまでは、permission denied になります。
URL設定ミス確認
自分自身のリポジトリであっても、アカウント名のスペルを1文字間違えて設定していると、他人のリポジトリにアクセスしようとしていると判定され、権限エラーになります。リモートリポジトリのURLが本当に自分のものであるか、後述する手順で確認しましょう。
push rejected エラーが出る場合
ターミナルに[rejected] main -> main (fetch first)やerror: failed to push some refs to ‘…’と表示される場合です。これは認証の問題ではなく、「手元のコードと、GitHub上のコードの歴史(変更履歴)が噛み合っていないから、受け入れられない」というエラーです。
リモートとの差がある
なぜこの拒否(rejected)が起きるかというと、「あなたがコードを編集している間に、誰か別の人がGitHub上のコードを書き換えた」、あるいは「GitHub上で直接README.mdファイルなどを編集・作成した」からです。
Gitは、最新の設計図をベースに作られたコードしかpushさせないルールになっています。GitHub側の方が進んでいる(新しい変更がある)状態で古いベースのコードをpushしてしまうと、他の人の変更が消えてしまうリスクがあるため、Gitが強制的にブレーキをかけているのです。
git pull が必要なケース
このエラーを解決するためには、まずGitHub上にある「最新の変更」を、手元のパソコンに取り込む(合体させる)必要があります。 VSCodeのターミナルで以下のコマンドを実行してください。
git pull origin main
※mainの部分は、お使いの環境(masterなど)に合わせて変更してください。
これでGitHub側の最新状態が手元にダウンロードされ、履歴が一本に繋がります。この状態で再度pushを行えば、今後は拒否されずにすんなり通ります。
競合(conflict)の確認
git pullをした際、もし「GitHub上のコード」と「あなたが手元で書き換えたコード」が同じファイルの同じ行だった場合、競合(コンフリクト)という状態が発生します。
VSCodeの画面に「マージの競合」という警告が出て、ファイルが赤くハイライトされます。これはエラーではなく、「どっちのコードを正解にするか、人間が目で見て選んでね」というGitからのメッセージです。
VSCodeの画面上部に「現在の変更を取り込む」「両方の変更を取り込む」といった便利なボタンが表示されますので、コードを綺麗に整えてから、再度コミットしてpushしてください。
リモートリポジトリ設定を確認する
手元のGitが、インターネット上のどこ(どのGitHubリポジトリ)を向いているかを確認・修正する方法です。
remote origin が正しいか
手元のプロジェクトフォルダで、送信先(リモート)のURLが正しく設定されているかを調べます。ターミナルで以下のコマンドを実行します。
git remote -v
実行すると、以下のように2行表示されるはずです。
origin https://github.com/ユーザー名/リポジトリ名.git (fetch)
origin https://github.com/ユーザー名/リポジトリ名.git (push)
このURLの「ユーザー名」や「リポジトリ名」が、1文字でも間違っていないか隅々まで確認してください。
URLの修正方法
もしURLが間違っていた場合、わざわざフォルダを作り直す必要はありません。以下のコマンドで、正しいURLに上書きすることができます。
git remote set-url origin 新しい正しいURL.git
設定し直したら、再度git remote -v で変更が反映されたか確認しましょう。
HTTPS / SSH の違い
GitHubとの接続方法には、https:// で始まるHTTPS接続と、git@github.com: で始まるSSH接続の2種類があります。
- HTTP接続:初期設定が非常に簡単で、初心者におすすめ。VSCodeのログイン連携機能がそのまま使えます。
- SSH接続:最初に「鍵」を作る手間がありますが、一度設定すればパスワード入力などが一切不要になり、セキュリティも強固。
初心者の方は、まずはトラブルが起きにくい「HTTPS接続」でリポジトリを登録することをおすすめします。
VSCode側で確認したいポイント
Gitのコマンド(黒い画面)を使わなくても、VSCodeにはGitをボタン操作できる優秀な画面が備わっています。エラーが出たときは、VSCodeの「ソース管理タブ」をじっくり見てみましょう。
ソース管理タブを確認する

VSCodeの左側メニューにある、「分岐した道のようなアイコン(ソース管理)」をクリックします。ここには、あなたがコードを書き換えたファイルの一覧が表示されています。
変更ファイルがステージされているか

Gitでファイルをpushするまでには、「①ステージング」「②コミット」「③push」という3つのステップを踏む必要があります。 変更されたファイル名の横にある「+」ボタンを押して、ファイルを「ステージされている変更」のエリアに移動させましょう。これを行わないと、Gitは「どのファイルを送信対象にするか」判断できません。
コミットできているか

ステージングが終わったら、上の入力欄に「何を変更したか(例:トップページのデザイン修正)」というメッセージ(コミットメッセージ)を入力し、「コミット(Commit)」ボタンを押します。 この「コミット」という確定作業をして初めて、あなたのパソコンの中に「新しい歴史」が刻まれます。この作業を飛ばしてpushボタンだけを押しても、「送信する中身がありません」という状態になってしまいます。
エラーを減らすために意識したいこと
GitやGitHubのトラブルで丸一日を潰してしまうような事態を防ぐために、私が普段の開発現場で徹底している「トラブルを未然に防ぐ習慣」を共有します。
小まめにcommit / pushする
「3日分の作業を一気にまとめてpushする」のは絶対にやめましょう。変更量が多ければ多いほど、万が一 rejected(拒否)や競合が起きたときの修正作業が地獄になります。
「1つの機能を作った」「1つのバグを直した」という小さな単位で、1日に何度もコミットし、小まめにpushする癖をつけてください。これだけで、トラブルの発生率は10分の1になります。
エラー文を読む(逃げない)
ターミナルに英語の長文が出ると、つい画面を閉じたくなりますが、Gitのエラーメッセージは非常に親切です。
多くの場合、エラー文の最後にhint: … という形で、「解決したければこのコマンドを打ち込みなさい」という具体的な指示が書かれています。エラー文を丸ごとコピーして、翻訳ツールや検索エンジンにかける習慣をつけましょう。
最初はHTTPS接続がおすすめ
プロっぽくてかっこいいという理由で、最初からSSH接続に挑戦して「鍵の生成」や「権限設定」で挫折してしまう人もいます。
まずは最も設定がシンプルな「HTTPS接続」と「VSCodeのGitHubログイン機能」を使い、Gitでファイルを送信する一連の流れ(体験)を掴むことを最優先にしてください。仕組みが分かってからSSHに移行しても、全く遅くありません。
どうしてもpushできない場合の確認手順
もし、色々な設定を試しすぎて「今自分の環境がどうなっているのか分からない!」と迷子になってしまったら、以下の「5ステップ」を上から順番に実行してください。
- Gitの確認:git –version でパソコンにGitが入っているか見る。
- GitHubログインの確認:VSCodeから一度サインアウトし、ブラウザ経由で再ログインして認証をリフレッシュする。
- リモートURLの確認:git remote -v で、接続先リポジトリのURLが自分のものと完全に一致しているか(スペルミスがないか)確認する。間違っていれば set-url で修正する。
- コミットの確認:VSCodeのソース管理画面で、変更されたファイルが残っていないか(すべてコミット済みか)確認する。
- pullの実行:pushの前に、必ず一度 git pull origin main を実行してGitHub上の最新状態を手元に混ぜる。
この手順を正しく踏めば、95%以上のpushエラーは綺麗に解決し、GitHub側にあなたの美しいコードがタイムラインとして反映されるようになります。
まとめ
VSCodeからGitHubへのpushを成功させるために、最も重要なキーワードは以下の4つです。
- 認証(Authentication): 正しいログイン状態でアクセスしているか
- リモート(Remote URL): 送信先の住所は1文字も間違っていないか
- コミット(Commit): 送信する中身をローカルできちんと確定させたか
- プル(Pull): GitHub側の最新の歴史を先に手元に取り込んだか
Gitは、最初のうちは目に見えない履歴の概念に戸惑うかもしれませんが、「絶対に嘘をつかない、とても生真面目なツール」です。エラーを一つ乗り越えるたびに、あなたのエンジニアとしての開発基盤(インフラ力)は確実にプロのレベルへと近づいています。
