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

To delete a local Git branch use the git branch command with the -d (--delete) option:

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

If you try to delete a branch which contains changes that are not merged in yet, 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 the message above says, you can force the deletion by using 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 master

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 ''

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.


In  this tutorial, you have learned 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.

With the git branch command, you can also Rename, Create, and List local and remote Git branches.

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