How To Delete a Local and Remote Git Branch

Updated on

3 min read

Delete a Local and Remote Git Branch

Branches are part of the everyday development process and one of the most powerful features in Git. Once a branch is merged, it serves no purpose except for historical research. It is common and recommended practice to delete the branch after a successful merge.

This guide covers how to delete local and remote Git branches.

Delete a Local Git Branch

The git branch command allows you to list, create , rename , and delete branches.

To delete a local Git branch, invoke the git branch command with the -d (--delete) option followed by the branch name:

git branch -d branch_name
Deleted branch branch_name (was 17d9aa0).

If you try to delete a branch that has unmerged changes, you’ll receive the following error message:

error: The branch 'branch_name' is not fully merged.
If you are sure you want to delete it, run 'git branch -D branch_name'.

As you can see from the message above, to force the deletion of a branch,use the -D option which is a shortcut for --delete --force:

git branch -D branch_name

Please note, if you delete an unmerged branch, you will lose all the changes on that branch.

To list all the branches that contain unmerged changes, use the git branch --no-merged command.

If you try to remove the current branch, you’ll get the following message:

error: Cannot delete branch 'branch_name' checked out at '/path/to/repository'

You can’t delete the branch you’re currently on. First, switch to another branch and then delete the branch_name:

git checkout mastergit branch -d branch_name

Delete a Remote Git Branch

In Git, local and remote branches are separate objects. Deleting a local branch doesn’t remove the remote branch.

To delete a remote branch, use the git push command with the -d (--delete) option:

git push remote_name --delete branch_name

Where remote_name is usually origin:

git push origin --delete branch_name
...
 - [deleted]         branch_name

There is also an alternative command to delete a remote branch, that is, at least for me, harder to remember:

git push origin remote_name :branch_name

If you are working on a project with a group of people and try to delete a remote branch that is already removed by someone else, you will receive the following error message:

error: unable to push to unqualified destination: branch_name The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to 'git@example.com:/my_repo'

In situations like this, you’ll need to synchronize your branch list with:

git fetch -p

The -p option tells Git to remove any remote-tracking references that no longer exist on the remote repository before fetching.

Conclusion

We’ve shown you how to delete local and remote Git branches. Branches are basically a reference to a snapshot of your changes and have a short life cycle. Once the branch is merged into the master (or another main branch), it is no longer needed and should be removed.

If you hit a problem or have feedback, leave a comment below.