Git How to Fix “error: src refspec master does not match any”

Did you try to push changes to master with the following?

$ git push origin master

But received an error that says:

error: src refspec master does not match any

The most common reason for this is that “master” isn’t called “master” anymore. To fix the issue, replace “master” with “main“.

$ git push origin main

Didn’t help?

This is a comprehensive guide to fixing the “error: src refspec master does not match any” -error. You will find easy fixes with explanations as to what’s going wrong.

Reasons for the “src refspec does not match any” -Error

Let’s have a closer look at the problems that might be causing the src refspec error.

1. The “master” Branch Isn’t Called “master”

Recently, Git replaced the name “master” with “main”. This means the default branch of your project is no longer called “master” by default but “main” instead.

Pushing changes to the non-existent “master” branch will cause issues. This is one of the most common explanations as to why you might see “error: src refspec master does not match any” when pushing.

In this case, you can try pushing to “main” instead.

$ git push origin main

If this doesn’t fix the issue, your default branch might have a different name than “main” or “master“.

To figure out what the “master” or “main” is called in your case, run the following:

$ git show-ref

The default branch is one of these references. Pick the one that’s your default branch and push the changes to it.

2. You Forgot to Commit

Another common reason why you might get the “error: src refspec master does not match any” error when pushing in Git is you haven’t made a commit.

For example, let’s start by creating an example repository and try to push it to GitHub:

$ mkdir example
$ cd example
$ echo "# Just another github repo" >> README.md
$ git init
$ git add README.md
$ git remote add origin https://github.com/user/repo.git
$ git push -u origin main

When running these commands, you will see an error:

error: src refspec main does not match any

This happens because you didn’t commit anything to the repository yet. In technical terms, a branch doesn’t exist before there’s at least one commit in the repository.

So make sure you’ve committed the changes before trying to push!

For instance, in the above, we forgot to commit the new README.md file after adding it. To fix this, create a commit and push again:

$ git commit -m "Initial commit"

Summary

The most common reason for the “error: src refspec master does not match any” -error is that you’re trying to push to “master” which these days is called “main“. In other words, you’re trying to push to a branch that doesn’t exist.

Another reason this error might occur is that your branch is empty and doesn’t exist. This can happen if you’ve initialized your repo, and added changes with git add but forgot to commit the changes with git commit. Before the initial commit, the branch doesn’t technically exist, and pushing will fail!

Thanks for reading. Happy coding!