You need to add a file to a commit before you can push your changes to a remote Git repository. If you create a new repository and forget to add a file to a commit, you may encounter the “src refspec master does not match any” error.
In this guide, we discuss what this error means and why it is raised. We walk through an example of this error so you can figure out how to fix it on your computer.
src refspec master does not match any
When you first create a Git repository, the repository has no commit history. If you want to push a change into a repository, you must first make a commit.
The workflow for pushing a change to a repository looks like this:
- Change a file
- Add the file to the staging area
- Create a commit
Once you have created a commit, you can push it to a remote server. If you forget the third step and try to push your code to a remote server, Git will raise an error. This is because Git will be unsure about what changes need to be made to the remote repository.
An Example Scenario
We’re going to create a Git repository for a new HTML project. To start, let’s create the directory structure for our project:
mkdir html-project cd html-project
We have created a directory called html-project and then we have moved into that directory.
Now that we have our folder ready, we can initialize a Git repository:
This command creates a hidden folder called .git/ which contains the configuration for our repository. Next, we create our first project file. We’re going to call this file index.html and add the following contents:
This file only contains one tag because we are still setting up our project. Now that we have a file in our repository, we’re going to link it up to a remote repository.
Our remote repository is hosted on GitHub. This will let us keep track of our project using the GitHub platform. To connect our local repository to the GitHub repository, we must add a remote reference to the GitHub repository:
git remote add origin https://github.com/career-karma-tutorials/html-project
After running this command, Git will know where our commits should go when we push them to our remote repository. Now we can add our changed file to our project:
git add .
Our index.html file is now in the staging area. To display this file on our remote repository, we can push it to the origin repository we just defined:
git push -u origin master
Let’s see what happens when we run this command:
error: src refspec master does not match any.
An error is returned.
The git add command does not create a commit. The git add command moves files to the staging area. This is a triage space where files go before they are added to a commit. You can remove and add files from the staging area whenever you want.
This error is common if you try to push changes to a Git ref before you have created your first commit to your local repo or remote repo.
We need to create an initial commit before we push our code to our remote repository:
git commit -m "feat: Create index.html"
This will create a record of the repository at the current point in time, reflecting all the changes we added to the staging area. Now, let’s try to push our code.
Our code is successfully pushed to our remote repository.
The “src refspec master does not match any” error occurs if you have forgotten to add the files you have changed to a commit and try to push those changes to a remote repository before you make the first commit in your repository.
To solve this error, create a commit using the git commit command and then try to push your changes to the remote repository. Now you have the knowledge you need to fix this error like a professional coder!