- Git
src refspec main does not match anyの直し方
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期連続の黒字決算。