error: src refspec main does not match any は、git push origin main で送ろうとした main というブランチが、手元に見つからなかったときのエラーです。 src(送る元)の main が、手元の何とも一致しない(does not match any)という意味です。

原因は3つです。git branch と git log で見分けられます。

git branch の表示 git log の表示 原因 直し方
何も表示されない does not have any commits yet まだ1つもコミットしていない git commit してから push
* master コミットがある 手元のブランチ名が master git push -u origin master:main、または名前を main に変える
* main コミットがある push のコマンドの打ち間違い(mian など) ブランチ名を直す

確認環境:git 2.43.0(確認日 2026年10月11日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「src refspec main does not match anyの直し方」

原因1:まだ1つもコミットしていない

$ git init -b main
$ git remote add origin <リポジトリのURL>
$ git add README.md
$ git push -u origin main
error: src refspec main does not match any
error: failed to push some refs to '...'
$ git branch
(何も表示されない)
$ git log --oneline
fatal: your current branch 'main' does not have any commits yet
$ git status
On branch main

No commits yet

git add しただけで、git commit していませんでした。 git のブランチは「コミットを指す名前」なので、コミットが1つも無いと、main というブランチはまだ実体がありません。git status には On branch main と表示されますが、git branch には何も出ません。

git commit -m "最初のコミット"
git push -u origin main          # * [new branch]  main -> main

コミットすると push できました。 最初の push までの手順は、関連記事の「git initの使い方|既存フォルダを最初のpushまで進める手順」で扱っています。

原因2:手元のブランチ名が master

$ git push -u origin main
error: src refspec main does not match any

$ git branch
* master

手元のブランチは master で、main という名前のブランチはありませんでした。 push のコマンドでは main と書いても、git の既定のブランチ名は、設定していなければ master です(git の公式ドキュメント。将来の Git 3.0 で main に変わる予定とされています)。確認環境でも、設定なしの git init では master になり、次の案内が表示されました。

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint:   git config --global init.defaultBranch <name>
直し方 コマンド 結果(確認環境)
手元の名前を main に変える git branch -m master main → git push -u origin main 手元もリモートも main
手元は master のまま、リモートの main に送る git push -u origin master:main master -> main と表示
これから作るリポジトリを main にする git config --global init.defaultBranch main 以降の git init は main

master:main は「手元の master を、リモートの main に送る」という書き方です(送る元:送る先)。ただし、手元とリモートで名前が違うと、そのあとの操作で混乱しやすいので、手元の名前を main に変えるほうがおすすめです。ブランチの名前の変え方は、関連記事の「gitブランチの削除と名前変更|-d・-D・-mとリモートブランチ削除」で扱っています。

原因3:ブランチ名の打ち間違い

$ git push origin mian
error: src refspec mian does not match any

エラー文の src refspec mian に、打ったブランチ名がそのまま出ます。 git branch の名前と比べます。

似たエラー:ブランチに居ない(detached HEAD)

$ git push origin HEAD               (detached HEAD の状態で)
error: The destination you provided is not a full refname (i.e.,
starting with "refs/"). ...
hint: Did you mean to create a new branch by pushing to
hint: 'HEAD:refs/heads/HEAD'?

ブランチではなくコミットを直接開いている状態(detached HEAD)では、別のエラーになりました。 送り先を git push origin HEAD:main のように指定するか、先にブランチを作ります。detached HEAD の戻し方は、関連記事の「detached HEADの戻し方|gitのコミットが消えたとき」で扱っています。

確認の手順(チェックリスト)

順番 確認すること 方法
1 エラー文のブランチ名 src refspec ○○ の ○○
2 手元のブランチ git branch(何も出なければコミット無し)
3 コミットがあるか git log --oneline
4 master か main か git branch --show-current
5 直す コミットする・git branch -m master main・名前を直す
6 今後 git config --global init.defaultBranch main

よくある質問

Q. failed to push some refs だけが出て、src refspec が出ません。 A. リモートに自分の持っていないコミットがある(rejected)など、別の原因です。関連記事の「git pushの使い方|-u・rejected・強制pushの対処」で扱っています。

まとめ

  • 送ろうとしたブランチが、手元に無いエラー
  • git branch が空なら、まだコミットしていない。git commit してから push
  • * master なら、手元の名前が master。git branch -m master main か master:main
  • git の既定のブランチ名は、設定しなければ master。init.defaultBranch main で変える
  • エラー文の src refspec ○○ で、打ち間違いも分かる

参考・出典

確認日はいずれも 2026年10月11日です。

  • Git Documentation「git-init」:https://git-scm.com/docs/git-init
  • Git Documentation「git-push」:https://git-scm.com/docs/git-push

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「src refspec main does not match anyの直し方」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?