339

How do I rename an existing branch in a Git repo?

I want the current branch to have a new name.

3
  • 2
    @CharlieParker It probably has something to do with the fact that this was Alex's only question, and he probably hasn't logged in since: "Last seen Feb 3 '11 at 21:29" Commented Sep 6, 2014 at 19:47
  • 15
    @J.B. OMG are you saying something may have happened to him???!!!!!!!!! Commented Sep 16, 2014 at 9:18
  • 3
    Does this answer your question? How do I rename both a Git local and remote branch name? Commented May 17, 2023 at 7:07

2 Answers 2

506

Assuming you're currently on the branch you want to rename:

git branch -m newname 

This is documented in the manual for git-branch, which you can view using

man git-branch 

or

git help branch 

Specifically, the command is

git branch (-m | -M) [<oldbranch>] <newbranch> 

where the parameters are:

 <oldbranch> The name of an existing branch to rename. <newbranch> The new name for an existing branch. The same restrictions as for <branchname> apply. 

<oldbranch> is optional, if you want to rename the current branch.

Sign up to request clarification or add additional context in comments.

10 Comments

Or git branch -m other-branch renamed-other-branch if you're not.
Also, if you've pushed the old branch to a remote, you can delete it with git push origin :branchname. That would allow you to push the new one and delete the old one, essentially renaming it on the remote.
@mipadi, it creates the new branch and don't delete the previous one.
git branch (-m | -M) [<oldbranch>] <newbranch> Didn't work for me, giving the syntax error.
@MohammedArif With -m, it renames the old branch, so it does delete the previous one.
|
225

If you're currently on the branch you want to rename:

git branch -m new_name 

Or else:

git branch -m old_name new_name 

You can check with:

git branch -a 

As you can see, only the local name changed Now, to change the name also in the remote you must do:

git push origin :old_name 

This removes the branch, then upload it with the new name:

git push origin new_name 

Source: https://web.archive.org/web/20150929104013/http://blog.changecong.com:80/2012/10/rename-a-remote-branch-on-github

4 Comments

I think this is the correct answer, the highly voted answer by Richard Feam only covers local repo, this one covers remote.
Agreed with the comment above, this answer was more complete in my case. Also, when I pushed additional commits to the remote branch after doing all the steps mentioned in this answer, git tried to push to the old_name branch again. Fortunately, git also supplied a fix in the command line: git-branch --unset-upstream. After this, all pushed commits went to the new_name remote branch.
beware that this way you lost the faculty to push with git push because you gent a warning whi says Your branch is based on 'old_name, but the upstream is gone. A git push -u origin new_name solve it.
This is the perfect answer which handles both remote and local branch renaming, thanks a lot.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.