如何重命名本地Git分支?

How do I rename a local Git branch?

我不想重命名远程分支,如本地和远程Git存储库的重命名主分支中所述。

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

如果还需要重命名远程分支:如何重命名Git本地和远程分支名称


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

1
git branch -m  <newname>

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

1
git branch -m <newname>

记住这一点的一种方法是,-m表示"移动"(或mv),这就是重命名文件的方式。


1
git branch -m old_branch_name new_branch_name

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

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

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

有关详细信息,请参阅"如何在Git中重命名本地分支名称"。


要重命名当前分支:

1
git branch -m <newname>


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

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

    1
    git branch --unset-upstream


    一旦分支完成,重命名分支将非常有用。然后新的东西出现了,你希望在同一个分支中开发,而不是删除它并创建新的分支。

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

    Quoting from Multiple States - Rename a local and remote branch in
    git

    1。重命名本地分支

    如果您在要重命名的分支上:

    1
    git branch -m new-name

    如果您在不同的分支机构:

    1
    git branch -m old-name new-name

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

    1
    git push origin :old-name new-name

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

    1
    git push origin -u new-name


    到目前为止,答案是正确的,但以下是一些附加信息:

    可以使用"-m"(移动)重命名分支,但必须小心,因为"-m"强制重命名,即使已有同名分支。以下是"Git Branch"手册页的摘录:

    >使用-m或-m选项,将被重命名为。如果有对应的reflog,则将其重命名为与匹配,并创建reflog条目以记住分支重命名。如果存在,必须使用-m来强制重命名。


    1。重命名

    如果是你现在的分公司,就做吧

    1
    git branch -m new_name

    如果它是您要重命名的另一个分支

    1
    git branch -m old_name new_name

    2。跟踪新的远程分支

    -如果您的分支被推送,那么在重命名之后,您需要将其从远程Git存储库中删除,并要求新的本地分支跟踪新的远程分支:

    1
    2
    git push origin :old_name
    git push --set-upstream origin new_name

    我愚蠢地以连字符开头命名了一个分支,然后签出了master。我不想删除我的分支,我在其中做过工作。

    这些都不起作用:

    git checkout -dumb-name

    git checkout -- -dumb-name

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

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

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


    要在本地重命名分支,请执行以下操作:

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

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

    要推送已删除旧分支的更改,请执行以下操作:

    1
    git push origin :[old-branch]

    推动新分支机构创建的变更:

    1
    git push origin [new-branch]


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

    1
    git branch -m [old_branch_name] [new_branch_name]

    -m:重命名/移动分支。如果已经有一个分支,您将得到一个错误。

    如果已经有一个分支,并且要用该分支重命名,请使用:

    1
     git rename -M [old_branch_name] [new_branch_name]

    有关帮助的详细信息,请在终端中使用以下命令:

    1
    git branch --help

    1
    man git branch

    高级git用户可以使用以下方法手动重命名:

    1
    2
    3
    4
    5
    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

    重命名分支:

    1
    git branch -m old_branchname new_branchname

    这里,-m期权的长名称是--move。所以我们也可以使用:

    1
    git branch --move old_branchname new_branchname

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

    1
    git branch -m new_branchname

    1
    git branch -move new_branchname

    如果要将这些更改移动到远程,请使用以下命令。

    1
    git push origin :old_branchname new_branchname

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

    1
    git push origin -u new_branchname

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


  • 重命名本地分支。
  • 如果您在要重命名的分支上:

    1
    git branch -m new-name

    如果您在不同的分支机构:

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

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

    或者,为了快速实现这一点,您可以使用以下三个步骤:

    #在本地重命名分支

    1
    git branch -m old_branch new_branch

    #删除旧的远程分支

    1
    git push origin :old_branch

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

    1
    git push --set-upstream origin new_branch

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


    这里有三个步骤:一个可以在终端内部调用并更改分支名称的命令。

    1
    2
    3
    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

    如果您需要更多:一步一步地,如何更改git分支名称是一篇很好的文章。


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

    如果你有这样的情况,我可以猜你在窗户上,这也会导致你:

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

    然后你要做一个中间步骤:

    1
    2
    $ git branch -m temporary
    $ git branch -m casesensitive

    再也没有了。


    试图具体回答这个问题(至少是题目)。

    您也可以重命名本地分支,但在远程上继续跟踪旧名称。

    1
    2
    git branch -m old_branch new_branch
    git push --set-upstream origin new_branch:old_branch

    现在,当您运行git push时,远程old_branchref将更新为本地new_branch

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

    使用fetch配置,甚至可以重命名本地远程引用。也就是说,有一个指向分支的refs/remote/origin/new_branchref指针,实际上是origin上的old_branch。不过,为了你的安全,我强烈反对这样做。


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

    enter image description here


    在本地更改分支非常容易…

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

    1
    git branch -m my_new_branch

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

    1
    git branch -m my_old_branch my_new_branch

    另外,我创建下面的图像在命令行上显示这个操作。在这种情况下,您在master分行,例如:

    Change branch name locally


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

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


    另一种选择是根本不使用命令行。像sourcetree这样的git-gui客户机消除了许多语法学习曲线/症结,这些曲线/症结会导致像这样的问题成为堆栈溢出时最容易看到的问题之一。

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


    由于您不希望将分支推送到远程服务器,因此此示例将非常有用:

    假设您有一个名为"我的热门功能"的现有分支,您希望将其重命名为"Feature-15"。

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

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

    有关详细信息,您可以访问本地和远程重命名Git中的分支。


    Git版本2.9.2

    如果要更改您所在的本地分支机构的名称:

    1
    git branch -m new_name

    如果要更改其他分支的名称:

    1
    git branch -m old_name new_name

    如果要将其他分支的名称更改为已存在的名称:

    1
    git branch -M old_name new_name_that_already_exists

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


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

    1
    git branch -m [old_branch] [new_branch]

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

    1
    git push origin :[old_branch]

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

    1
    git push origin :old_branch new_branch

    一种简单的方法:

    1
    2
    3
    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

    更多信息,请参阅。


    remote和github上复制名称更改只需两个步骤:

    步骤1 git branch -m old_branchname new_branchname

    步骤2 git push origin :old_branchname new_branchname


    对于git-gui用户来说,这不可能简单得多。在git gui中,从菜单项branch:rename创建的"重命名分支"对话框的下拉列表中选择分支名称,键入新名称,然后单击"重命名"。我已经突出显示了在哪里可以找到下拉列表。

    Rename a local Git branch


    1
    git branch -m old_branch_name  new_branch_name

    1
    git branch --move old_branch_name new_branch_name


    之前所有的答案都是关于git branch -m。当然,它很容易操作,但对我来说,记住另一个git命令可能有点困难。所以我试着按照我熟悉的命令完成工作。是的,你可能猜到了。

    我用的是git branch -b 。如果你现在不想保存旧的分支,你可以执行git branch -D 来删除它。

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


    Git分支重命名可以使用以下方法完成:

  • git branch -m oldBranch newBranch

  • git branch -M oldBranch ExistingBranch

  • -m和-m的区别是:

    -M:如果你想用一个现存的分支名称重命名你的分支,使用-M。它将引发一个错误,说明分支已经存在。你需要给出唯一的名字。

    但是,

    -M:这将有助于您使用给定的名称强制重命名,即使它已经存在。所以一个现有的分支将用它完全覆盖…

    下面是一个git终端示例,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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$

    如果你想:

    • 重命名git存储库,运行:git branch -m
    • 删除旧分支机构:git push origin: old-name new-name
    • 使用:git commit 提交
      • 然后使用:git push origin new_branch_name:master
    • 如果要检查状态,请使用:git status
    • 如果您想结账,请使用:git checkout

    在PhpStorm:

    VCS→Git→分支…→本地分支→_您的分支u→重命名