How to Delete a Local and Remote Git Branch

Introduction

Before we go into how to delete a local and remote Git branch, first let's understand - what is Git?

Git is a popular open-source distributed version control system that can handle a wide range of projects, from small to large, quickly and efficiently. It stands out since it is user-friendly and simple to understand.

In this tutorial, you will delete a local and remote Git branch. We will also address a few FAQs on how to delete a local and remote Git branch.

Delete a Local Git Branch

You can list, create, rename, and delete branches with the git branch command.

Invoke the git branch command with the -d (--delete) option followed by the branch name to delete a local Git branch:

git branch -d branch_name
Output

Deleted branch branch_name (was 11f4gt1).

You'll see the following error notice if you try to delete a branch with unmerged changes:

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 statement above, the -D option, which is a shortcut for --delete --force is used to force the deletion of a branch.

git branch -D branch_name

Please keep in mind that deleting an unmerged branch will result in the loss of all changes made to that branch.

💡
Use the git branch --no-merged command to see all the branches with unmerged changes.

You'll see the following notice if you try to remove the current branch:

Output

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

You won't be able to delete the branch you're on right now. Switch to a different branch first, then delete the branch_name:

git checkout master
git branch -d branch_name

Delete a Remote Git Branch

Local and remote branches are distinct objects in Git. The remote branch is not deleted when a local branch is deleted.

Use the git push command with the -d (--delete) option to delete a remote branch:

git push remote_name --delete branch_name

In most cases, remote_name is origin:

git push origin --delete branch_name
Output

...
 - [deleted]         branch_name

There is another command to delete a remote branch that is more difficult to remember:

git push origin remote_name :branch_name

You will obtain the following error message if you are working on a project with a group of people and try to delete a remote branch that has already been removed by someone else:

Output

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'

You'll need to synchronize your branch list with:

git fetch -p

Before fetching, the -p option instructs Git to erase any remote-tracking references that no longer exist on the remote repository.

FAQs to Delete a Local and Remote Git Branch

What if I want to force delete a local branch? 

If you want to force delete a local branch that hasn't been merged, you can use the command git branch -D <branch_name>. This will delete the branch forcibly.

What happens if I delete a branch that hasn't been merged? 

If you delete an unmerged branch, all commits and changes unique to that branch will be lost permanently. Make sure you don't have any important work on the branch before deletion.

What's the difference between deleting a remote branch and deleting a local branch? 

Deleting a remote branch removes the branch from the remote repository, while deleting a local branch removes it from your local repository only. However, both actions will make the branch's commits and changes inaccessible if they haven't been merged.

How can I see a list of all local branches before deleting? 

You can use the command git branch to see a list of all local branches in your repository. This will help you identify the branch you want to delete.

Is it possible to delete a remote Git branch? 

Yes, you can delete a remote Git branch using the command git push origin --delete <branch_name>. This will remove the specified branch from the remote repository.

Can I delete multiple local branches at once? 

Yes, you can delete multiple local branches together using the command git branch -d <branch1> <branch2> .... Just list the branch names separated by spaces.

Is there any way to delete multiple remote branches simultaneously? 

Yes, you can delete multiple remote branches at once using the command git push origin --delete <branch1> <branch2> .... This will delete all specified branches from the remote repository.

Conclusion

We've already shown you how to delete Git branches on the local and remote levels. Branches are essentially a snapshot of your changes that have a short life span. The branch is no longer needed and should be removed after it has been merged into the master (or another major branch).

If you have any queries, please leave a comment below, and we’ll be happy to respond to them for sure.