如何重命名本地 Git 分支?

11448
如何重命名一个尚未推送到远程仓库的本地分支?
相关链接:
- [重命名本地和远程 Git 仓库的主分支](link1) - [如何同时重命名 Git 的本地和远程分支名称?](link2)
41个回答

25

如果你不想将分支推送到远程服务器,那么这个例子会很有用:

假设你已经有了一个名为“my-hot-feature”的现有分支,而你想将其重命名为“feature-15”。

首先,你需要更改本地分支。这非常简单:

git branch -m my-hot-feature feature-15

欲了解更多信息,请访问Git中本地和远程分支的重命名


23
如果你愿意使用我强烈推荐的SourceTree,你可以右键点击你的分支并选择“重命名”。

enter image description here


22

一个简单的方法:

git branch -m old_branch new_branch         # Rename branch locally
git push origin :old_branch                 # Delete the old branch
git push --set-upstream origin new_branch   # Push the new branch, set local branch to track the new remote

更多信息请参见此处


22
另一种选择是不使用命令行。像SourceTree这样的Git GUI客户端消除了大部分语法学习曲线/痛苦,这也导致像这个问题一样成为Stack Overflow上最受欢迎的问题之一。
在SourceTree中,在左侧的“分支”窗格中右键单击任何本地分支,然后选择“重命名...”。

6
我不会称之为痛苦。一旦您看到这个答案,就会发现git命令非常容易使用,您可能再也不需要回来了。问题更多的是,似乎git命令行的文档不够直观易懂。 - Nearoo
1
真的,但是有了SourceTree,我几乎不需要担心查看文档。一切都很直观 - 只需右键单击并查看选项即可。(顺便说一句,我与他们没有任何关联 - 只是喜欢这个工具!) - Steve Chambers

17

Git版本2.9.2

如果您想更改所处的本地分支名称:

git branch -m new_name

如果您想更改不同分支的名称:

git branch -m old_name new_name

如果您想将不同分支的名称更改为已存在的名称:

git branch -M old_name new_name_that_already_exists

注意:最后一个命令是破坏性的,将重命名你的分支,但你将会失去那个名称和提交记录的旧分支,因为分支名称必须是唯一的。


15

如果您想要更改当前分支的名称,请运行:

git branch -m [old_branch] [new_branch]

如果你想删除旧的远程分支,运行以下命令:

git push origin :[old_branch]

如果您想删除旧的远程分支并创建新的远程分支,请运行:

git push origin :old_branch new_branch

11

实际上你需要三步,因为本地分支在服务器上有一个副本,所以我们需要一个本地步骤和两个服务器步骤:

  1. 重命名本地分支:只需使用以下命令来重命名当前分支,即使您已经检出它:
git branch -m <old-branch-name> <new-branch-name>
  • 删除服务器上的一个分支:使用以下命令删除服务器上旧名称的分支:
  • git push <remote-name[origin by default]> :<old-branch-name>
    
  • 推送新分支:现在是时候将命名为的新分支推送到服务器上了:
  • git push -u <new-branch-name>
    

    1
    在我的情况下,第三个命令负责重命名远程分支,而不执行上述第二个命令。在重命名远程分支之前需要删除吗? 在重命名远程分支之前需要删除吗? - SP007
    1
    @SP007,第二个命令不是必要的,但我有点担心在git服务器上的清晰度,所以我不会保留无用的分支。 - AmerllicA

    9

    使用以下命令可以重命名Git分支:

    1. git branch -m oldBranch newBranch

    2. git branch -M oldBranch ExistingBranch

    -m和-M的区别:

    -m: 如果您试图使用-m将分支重命名为现有的分支名称,则会出现错误,指出分支已存在。您需要提供唯一的名称。

    但是,

    -M: 这将帮助您强制使用给定的名称重命名分支,即使它已存在。因此,现有分支将被完全覆盖...

    这里是一个Git终端示例:

    mohideen@dev:~/project/myapp/sunithamakeup$ git branch
      master
      master0
      new_master
      test
    * test1
    mohideen@dev:~/project/myapp/sunithamakeup$ git branch -m test1 test
    fatal: A branch named 'test' already exists.
    mohideen@dev:~/project/myapp/sunithamakeup$ git branch -M test1 test
    mohideen@dev:~/project/myapp/sunithamakeup$ git branch
      master
      master0
      new_master
    * test
    mohideen@dev:~/project/myapp/sunithamakeup$
    

    8
    所有之前的答案都在谈论 git branch -m 命令。当然,操作起来很容易,但对于我来说,也许记住另一个 Git 命令有点困难。所以我尝试使用我熟悉的命令完成工作。是的,你可能已经猜到了。
    我使用 git branch -b <new_branch_name> 命令。如果你不想保存旧分支,现在可以执行 git branch -D <old_branch_name> 命令将其删除。
    我知道这可能有点繁琐,但更容易理解和记忆。希望对你有帮助。

    7
    对于Git GUI用户来说,这个过程非常简单。在Git GUI中,从菜单项Branch:Rename创建“重命名分支”对话框中的下拉列表中选择分支名称,输入新名称,然后点击“重命名”。我已经突出显示了下拉列表的位置。
    请参考以下截图:Rename a local Git branch

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接