如何重命名本地Git分支?

时间:2011-07-06 03:20:37

标签: git git-branch

我不想重命名远程分支,如 Rename master branch for both local and remote Git repositories 中所述。

如何重命名尚未推送到远程分支的本地分支?

如果您还需要重命名远程分支:
How do I rename both a Git local and remote branch name

37 个答案:

答案 0 :(得分:12257)

如果要在指向任何分支时重命名分支,请执行以下操作:

git branch -m <oldname> <newname>

如果要重命名当前分支,可以执行以下操作:

git branch -m <newname>

记住这一点的方法是-m用于“移动”(或mv),这就是重命名文件的方式。

答案 1 :(得分:390)

git branch -m old_branch_name new_branch_name

上述命令将更改您的分支名称,但您必须非常小心地使用重命名的分支,因为它仍将引用与之关联的旧上游分支(如果有)。

如果要在将本地分支重命名为new_branch_name(示例名称)后将某些更改推送到master中:

git push origin new_branch_name:master(现在更改将转到主分支,但您的本地分支名称为new_branch_name)

有关详细信息,请参阅“How to rename your local branch name in Git。”

答案 2 :(得分:284)

要重命名当前分支:

git branch -m <newname>

答案 3 :(得分:230)

以下是重命名分支的步骤:

  1. 切换到需要重命名的分支
  2. git branch -m <new_name>
  3. git push origin :<old_name>
  4. git push origin <new_name>:refs/heads/<new_name>
  5. 编辑(12/01/2017):确保运行命令git status并检查新创建的分支是否指向自己的引用而不是旧引用。如果找到对旧分支的引用,则需要使用以下命令取消设置上游:

    git branch --unset-upstream
    

答案 4 :(得分:166)

分支完成后重命名分支将非常有用。然后新的东西即将到来,你想要在同一个分支中开发而不是删除它并创建新的。

根据我的经验,要在Git中重命名本地和远程分支,您应该执行以下步骤。

  

引自Multiple States - Rename a local and remote branch in git

1。重命名本地分支

如果您在分支机构上,则要重命名:

git branch -m new-name

如果你在不同的分支:

git branch -m old-name new-name

2。删除旧名称远程分支并推送新名称本地分支

git push origin :old-name new-name

3。重置新名称本地分支的上游分支

git push origin -u new-name

答案 5 :(得分:95)

到目前为止的答案是正确的,但这里有一些额外的信息:

可以使用'-m'(移动)重命名分支,但必须小心,因为'-M'强制重命名,即使已存在具有相同名称的现有分支也是如此。以下是'git-branch'手册页的摘录:

&GT; 使用-m或-M选项,<oldbranch>将重命名为<newbranch>。如果<oldbranch>具有相应的reflog,则将其重命名为匹配<newbranch>,并创建reflog条目以记住分支重命名。如果存在<newbranch>,则必须使用-M强制重命名。

答案 6 :(得分:67)

我愚蠢地用连字符命名了一个分支,然后检查了主人。我不想删除我的分支,我在其中工作。

这些都没有奏效:

git checkout -dumb-name

git checkout -- -dumb-name

" s,'\ s也没有帮助。 git branch -m不起作用。

以下是我最终修复它的方法。进入工作副本的.git / refs / heads,找到文件名“-dumb-name”,获取分支的哈希值。然后,这将检查出来,创建一个具有合理名称的新分支,并删除旧分支。

git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name

答案 7 :(得分:61)

在本地重命名分支:

git branch -m [old-branch] [new-branch]

现在,您还必须在远程服务器上传播这些更改。

推送已删除旧分支的更改:

git push origin :[old-branch]

推动创建新分支的更改:

git push origin [new-branch]

答案 8 :(得分:34)

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

git branch -m [old_branch_name] [new_branch_name]

-m:重命名/移动分支。如果已有分支,则会出错。

如果已有分支并且您想要使用该分支重命名,请使用:

 git rename -M [old_branch_name] [new_branch_name]

有关帮助的更多信息,请在终端中使用此命令:

git branch --help

man git branch

答案 9 :(得分:32)

重命名分支:

git branch -m old_branchname new_branchname

此处-m选项的长名称为--move。所以我们也可以使用:

git branch --move old_branchname new_branchname

如果要重命名当前分支,请使用以下命令:

git branch -m new_branchname

git branch -move new_branchname

如果您想将这些更改移至远程,请使用以下内容。

git push origin :old_branchname new_branchname

这将删除old_branchname远程分支并推送new_branchname本地分支。

git push origin -u new_branchname

这将重置new_branchname本地分支的上游分支。

答案 10 :(得分:32)

高级Git用户可以使用以下方式手动重命名:

Rename the old branch under .git/refs/heads to the new name

Rename the old branch under .git/logs/refs/heads to the new name

Update the .git/HEAD to point to yout new branch name

答案 11 :(得分:27)

  1. 重命名您当地的分行。
  2. 如果您在分支机构上,则要重命名:

    git branch -m new-name
    

    如果你在不同的分支:

    git branch -m old-name new-name
    
    1. 删除旧名远程分支并推送新名称本地分支。
    2. git push origin :old-name new-name

      1. 重置新名称本地分支的上游分支。 切换到分支,然后:
      2. git push origin -u new-name

        或者为了快速做到这一点,您可以使用以下3个步骤:

        #本地重命名分支

        git branch -m old_branch new_branch  
        

        #删除旧的远程分支

        git push origin :old_branch  
        

        #推送新分支,设置本地分支以跟踪新远程

        git push --set-upstream origin new_branch   
        

        Referance:https://www.w3docs.com/snippets/git/how-to-rename-git-local-and-remote-branches.html

答案 12 :(得分:22)

可能正如其他人所提到的,这将是分支命名中的案例不匹配。

如果您遇到这种情况,我可以猜测您在Windows上也会引导您:

$ git branch -m CaseSensitive casesensitive
fatal: A branch named 'casesensitive' already exists.

然后你必须做一个中间步骤:

$ git branch -m temporary
$ git branch -m casesensitive

没有更多。

答案 13 :(得分:22)

以下是三个步骤:您可以在终端内调用并更改分支名称的命令。

NameError: undefined local variable or method `server' for main:Object
        from (irb):1
        from C:/RailsInstaller/Ruby2.2.0/bin/irb:11:in `<main>'),

如果您需要更多: How To Change Git Branch Name 是一篇很好的文章。

答案 14 :(得分:20)

尝试专门回答问题(至少标题)。

您还可以重命名本地分支,但会一直跟踪遥控器上的旧名称。

readerControl

现在,当您运行config.js时,远程git branch -m old_branch new_branch git push --set-upstream origin new_branch:old_branch 参考号将使用您的本地git push进行更新。

您必须了解并记住此配置。但是如果你没有远程分支名称的选择,但是你不喜欢它(哦,我的意思是,你有一个非常好的理由不喜欢它,它会很有用它!)并且更喜欢当地分支机构更清晰的名称。

使用fetch配置,您甚至可以重命名本地远程引用。即,具有指向分支的old_branch ref指针,实际上是new_branch上的refs/remote/origin/new_branch。但是,为了你的安全,我强烈反对这一点。

答案 15 :(得分:18)

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

enter image description here

答案 16 :(得分:18)

更改分支本地非常简单......

如果您在分支机构上想要更改名称,只需执行以下操作:

git branch -m my_new_branch

否则,如果您在master任何其他分支而不是您要更改名称的分支,只需执行以下操作:

git branch -m my_old_branch my_new_branch

另外,我创建了下面的图片,以便在命令行中显示此操作。在这种情况下,您在master分支上,例如:

Change branch name locally

答案 17 :(得分:17)

要重命名当前分支(分离的HEAD状态除外),您还可以使用此别名:

[alias]
    mvh = !sh -c 'git branch -m `git rev-parse --abbrev-ref HEAD` $1'

答案 18 :(得分:15)

另一种选择是根本不使用命令行。诸如SourceTree之类的Git GUI客户端消除了大部分语法学习曲线/痛苦,导致这样的问题成为Stack Overflow中观看次数最多的问题。

在SourceTree中,右键单击左侧“分支”窗格中的任何本地分支,然后选择“重命名...”。

答案 19 :(得分:13)

由于您不想将分支推送到远程服务器,因此该示例很有用:

假设您有一个名为“my-hot-feature”的现有分支,并且您想将其重命名为“feature-15”。

首先,您要更改本地分支。这可能不容易:

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

有关详情,请访问 Locally and Remotely Renaming a Branch in Git

答案 20 :(得分:10)

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

注意:最后一个命令是破坏性的并且会重命名您的分支,但是您将丢失具有该名称和那些提交的旧分支,因为分支名称必须是唯一的。

答案 21 :(得分:8)

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

git branch -m [old_branch] [new_branch]

如果要删除旧的远程分支,请运行:

git push origin :[old_branch]

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

git push origin :old_branch new_branch

答案 22 :(得分:8)

一种简单的方法:

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

有关详情,请参阅this

答案 23 :(得分:7)

实际上,您需要执行三个步骤,因为本地分支在服务器上具有重复项,因此我们在本地在服务器上的两个步骤中只有一个步骤:

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

答案 24 :(得分:7)

只需两个步骤即可在remote和GitHub上复制名称更改:

步骤1 git branch -m old_branchname new_branchname

第2步git push origin :old_branchname new_branchname

答案 25 :(得分:4)

git branch -m old_branch_name  new_branch_name

git branch --move old_branch_name new_branch_name

答案 26 :(得分:4)

对于Git GUI用户,这再简单不过了。 在Git GUI中,从菜单项Branch:Rename创建的“重命名分支”对话框的下拉列表中选择分支名称,键入新名称,然后单击“重命名”。我突出显示了在哪里可以找到下拉列表。

Rename a local Git branch

答案 27 :(得分:3)

Git分支重命名可以使用:

完成
  1. git branch -m oldBranch newBranch

  2. git branch -M oldBranch ExistingBranch

  3. -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$
    

答案 28 :(得分:3)

之前的所有答案都在讨论am9objpkb2U=。当然,它很容易操作,但对我来说,记住另一个Git命令可能有点困难。所以我试着通过我熟悉的命令完成工作。是的,你可能猜到了。

我使用git branch -m。如果您现在不想保存旧分支,则可以执行git branch -b <new_branch_name>将其删除。

我知道这可能有点乏味,但更容易理解和记忆。我希望它对你有所帮助。

答案 29 :(得分:2)

如果你想:

  • 重命名Git存储库,运行:git branch -m <oldname> <newname>
  • 删除旧分支:git push origin: old-name new-name
  • 使用以下方式提交:git commit <newname>
    • 然后使用:git push origin new_branch_name:master
    • 推送
  • 如果您想查看状态,请使用:git status
  • 如果您想退房,请使用:git checkout

答案 30 :(得分:2)

开始之前,请确保您已选择要重命名的分支:

git checkout old-name

如果要查看所有本地分支,请使用以下命令:

git branch --list

一无所知,请按照以下步骤操作:

  1. 使用Git重命名分支命令将要求您在命令中添加 -m 选项:

    git branch -m new-name
    
  2. 您还可以使用以下两个命令从另一个分支重命名本地分支:

    git checkout master
    
    git branch -m old-name new-name
    
  3. 最后,此命令将列出所有分支(本地和远程)以验证其已被重命名:

    git branch -a
    

尽管不可能直接重命名远程分支,但重命名分支的过程涉及以下三个简单步骤:

  1. 要开始,您需要按照前面的步骤重命名本地分支。 2.然后删除 分支,并推送一个分支。您可以使用以下命令轻松完成此操作:

     git push origin --delete old-name
     git push origin :old-name new-name
    
  2. 为您的新本地分支重置上游分支,您将被设置为全部

    git push origin -u new-name
    

答案 31 :(得分:1)

在PhpStorm中:

VCS→Git→分支机构......→本地分支机构→ _your_branch _ →重命名

答案 32 :(得分:1)

您要做的只是三个步骤:

  1. 为.git / refs / heads下的旧分支赋予新名称
  2. 为.git / logs / refs / heads下的旧分支赋予新名称
  3. 更新.git / HEAD以使用新的分支名称

答案 33 :(得分:0)

重命名当前分支

git branch -m <newbranchname>

git branch -m oldbranchname newbranchname

答案 34 :(得分:0)

AndroidStudio基于IntelliJ IDEA(我假设所有JetBrains的IDE都具有相同的功能)

VCS -> Git -> Remotes... -> Edit

enter image description here

答案 35 :(得分:0)

git branch -m [old-branch] [new-branch]

-m表示将所有内容从[旧分支]移至[新分支],并记住您可以将-M用于其他文件系统。

答案 36 :(得分:0)

本地使用

首先从要更新名称的分支中更改当前分支 例如我有3个分支 branch1 branch2 branch3

检查当前分支

git branch --show-current

输出可能为:branch1

然后您可以更新branch2和branch3的名称,而不是当前的

git branch -m old_branchname new_branchname



对于远程

只需三个步骤即可在远程以及GitHub上复制名称更改:

git branch -m old_branchname new_branchname
git push origin :old_branchname new_branchname
git push --set-upstream origin new_branchname