“Src Refspec Does Not Match Any” Error in Git

Have you ever heard of the joke that Microsoft Excel is responsible for handling the global economy?

The same can be said about Git and the global codebases. Git is responsible for providing the version control system for majority of developers. This ranges from “hello worlds” to complex repositories from enterprise applications.

For this tutorial, we are, however, not going to introduce you to the world of Git. We assume that you are already familiar with it. For this one, we will talk about a common error that occurs when you are just getting started with Git.

When you are just starting with version control, you might come across the “src refspec does not match” error. This can be confusing and that is what we want to avoid. We will walk you through this error starting with why and how to fix it.

Why Does It Occur?

Let us start with discussing why this error occurs. In most cases, when you get this error, it means that the version control system (Git) cannot find a branch or reference that matches the specified refspec.

A refspec is a shorthand notation in Git that specifies how to map the references between local and remote repositories.

When we push a change to a remote repository, we specify a refspec to indicate which local branch should be pushed to the remote branch.

Hence, if you run the “git push” command and get this error, it means that the specified refspec does not match any existing branchs or references on the remote repo.

The following are some of the reasons why the refspec does not match the remote repo:

  • Attempting to push to a non-existent branch on the remote repository
  • Using the wrong refspec or branch name in the “push” command
  • The local branch that you are trying to push has not been created or committed yet

Example 1: Pushing to a Non-Existent Branch

A common cause of this error is attempting to push the changes to a non-existent branch. Let’s say we have a local branch called “new-features” and we wish to push it to a remote repository called “origin”.

However, we have not yet created a new branch with a similar name on the remote repository. We can run the command as follows:

git push origin new-feature

In this case, the command returns the “src refspec does not match any” error because Git cannot find a matching branch on the remote repository.

Example 2: Using the Wrong Refspec

The second common cause of this error is using the incorrect refspec. Suppose we want to push a local branch called “main” to a remote branch called “master”. However, we mistakenly use the wrong refspec as follows:

$ git push origin master

In this case, since the local branch is named “main” and not master, Git produces the error because it can’t find a branch named “master” to match the refspec.

How to Fix It

The solution to this problem is to basically understand why it occurs in the first place. We have already given the possible causes. Now, here are a few potential fixes:

  • Verify the branch name
  • Ensure that the local branch exists
  • Commit your changes
  • Push using the correct refspec

The provided fixes should help you resolve this error without a hitch.


In this tutorial, we learned how you can resolve the “git src refspec does not match any” error. We also covered what causes this error.

About the author

John Otieno

My name is John and am a fellow geek like you. I am passionate about all things computers from Hardware, Operating systems to Programming. My dream is to share my knowledge with the world and help out fellow geeks. Follow my content by subscribing to LinuxHint mailing list