在Git仓库中更改分支名称


294

如何重命名Git存储库中的现有分支?

我希望当前分支有一个新名称。


2
接受答案@Alex或说出您为什么不想接受它。
查理·帕克

1
@CharlieParker它可能有一些做的事实,这是亚历克斯的唯一的问题,他可能还没有,因为登录:“上次在21:29看到2月3日'11”
黄圣人

13
@JB OMG,您是说他可能发生了什么?????? !!!!!!!!!
2014年

1
对此问题进行高度投票的答案是否可以接受?
史蒂夫·钱伯斯

Answers:


465

假设您当前在要重命名的分支上:

git branch -m newname

这在的手册中有说明git-branch,您可以使用查看

man git-branch

要么

git help branch

具体来说,该命令是

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

其中的参数是:

   <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> 如果要重命名当前分支,则为可选。


10
或者,git branch -m other-branch renamed-other-branch如果不是。
mipadi 2010年

32
另外,如果您已将旧分支推送到远程,则可以使用删除它git push origin :branchname。这样一来,您就可以推送新的旧的而删除旧的,从而在远程上将其重命名。
乔纳森

1
@mipadi,它将创建新分支,并且不会删除前一个分支。
Mohammad Arif

git branch(-m | -M)[<oldbranch>] <newbranch>不适用于我,给出语法错误。
Mohammad Arif

@MohammedArif使用-m,它将重命名旧分支,因此它删除前一个分支。
理查德·费恩

176

如果您当前在分支上,则要重命名:

git branch -m new_name 

要不然:

git branch -m old_name new_name 

您可以通过以下方式进行检查:

git branch -a

如您所见,只有本地名称已更改现在,要在远程服务器上也更改名称,您必须执行以下操作:

git push origin :old_name

这将删除分支,然后使用新名称上传:

git push origin new_name

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


13
我认为这是正确的答案,Richard Feam的高票数答案仅涵盖本地回购协议,而此则涵盖远程解决方案。
user1145404 '16

4
同意以上评论,就我而言,此答案更为完整。另外,当我在完成此答案中提到的所有步骤后将其他提交推送到远程分支时,git尝试old_name再次推送到分支。幸运的是,git在命令行中还提供了一个修复程序:git-branch --unset-upstream。此后,所有推送的提交都到达了new_name远程分支。
Hans Roerdinkholder 2016年

2
请注意,这样一来您就失去了继续努力的能力,git push因为您绅士发出警告,说Your branch is based on 'old_name, but the upstream is gone.A git push -u origin new_name解决了。
netalex
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.