How do I delete a local branch in Git?

Git makes managing branches really easy - and deleting local branches is no exception:

$ git branch -d <local-branch>

In some cases, Git might refuse to delete your local branch: when it contains commits that haven't been merged into any other local branches or pushed to a remote repository.
This is a very sensible rule that protects you from inadvertently losing commit data.

If you want to delete such a branch nonetheless (e.g. because you've programmed yourself into a dead end and produced commits that aren't worth keeping) you can do so with the "-D" flag:

$ git branch -D <local-branch>

This will force deletion of the branch, even if it contains unmerged / unpushed commits. It goes without saying: please be careful with this command!

Can I undo deleting a branch?

In most cases, if you don't let too much time pass, you can restore a deleted branch.

If you're working with Git on the Command Line, you should take a look at a Git tool called "Reflog". Learn more about this in our free First Aid Kit for Git video series.

If you're using the Tower Git client, you can simply press CMD + Z - like you would to undo changes in a text editor - to undo the deletion and restore the branch:

How do I delete a remote branch in Git?

To delete a remote branch, you need to use the "git push" command:

$ git push origin --delete <remote-branch-name>