Git – How to rename a local Git branch

gitgit-branchversion-control

I don't want to rename a remote branch, as described in Rename master branch for both local and remote Git repositories.

How can I rename a local branch which hasn't been pushed to a remote repository?

In case you need to rename a remote branch as well:
How do I rename both a Git local and remote branch name?

Best Solution

If you want to rename a branch while pointed to any branch, do:

git branch -m <oldname> <newname>

If you want to rename the current branch, you can do:

git branch -m <newname>

If you want to push the local branch and reset the upstream branch:

git push origin -u <newname>

And finally if you want to Delete the remote branch:

git push origin --delete <oldname>

A way to remember this is -m is for "move" (or mv), which is how you rename files. Adding an alias could also help. To do so, run the following:

git config --global alias.rename 'branch -m'

If you are on Windows or another case-insensitive filesystem, and there are only capitalization changes in the name, you need to use -M, otherwise, git will throw branch already exists error:

git branch -M <newname>