How to delete a Git branch and tags locally and remotely?



In this tutorial we are going to explain how to delete a branch locally and remote using git.

What do I need to do differently to successfully delete the remotes/origin/bugfix branch both locally and on GitHub?

Delete current branch

In this tutorial we assume that you are using origin as remote name, but it could have another name.

$ git branch # will output current branch
$ git push origin --delete  ## deletes remote branch on origin
$ git branch -d  ## Delete Local Branch 

Delete branch using the name

To delete the local branch using the name execute:

$ git branch --delete branch_name 

You can use -d as a shortcut for --delete. This command will delete local branch if it has already been fully merged in its upstream branch.

If you want to delete the even if it was not merged:

$ git branch --delete --force branch_name 

As a shortcut you can use -D, which is an alias for --delete --force.

Other ways to delete git Remote Branch

$ git push origin :   # deletes current branch
$ git push origin :branch_name # deletes the branch_name

Deleting tags with git

If you need to change the tagged commit or the name of the tag, you will need to delete it with the commands:

git tag -d v1.0 # delete local tag
git push origin :refs/tags/v1.0  # deletes tah on origin

Delete remote-tracking branches

If you deleted branches without the command line, then your local repo could contain obsolete remote-tracking branches.

This can happen if you deleted a remote branch directly through web interface. To delete remote-tracking branches execute:

git fetch origin --prune

Appendix: What is a remote tracking branch?

Remote-tracking branches are used to know what remote branch to get chnages from (git pull/fetch) and if you have remote-tracking when you execute git status it will provide information about commit behind or ahead. It's used to compare your local branch with a remote branch.

Appendix: More information about branchs

If you need to list remote branches you can execute:

git branch --remotes
git branch -r # same as above.

If you need to view local and remote branches:

git branch --all
git branch -a # same as above