繁体   English   中英

如何重命名本地 Git 分支?

How do I rename a local Git branch?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

有关的:

38 个回复

在指向任何分支时重命名分支:

git branch -m <oldname> <newname>

重命名当前分支:

git branch -m <newname>

推送本地分支并重置上游分支:

git push origin -u <newname>

要删除远程分支:

git push origin --delete <oldname>

记住这一点的一种方法是-m用于“移动”(或mv ),这是您重命名文件的方式。 添加别名也可能有所帮助。 为此,请运行以下命令:

git config --global alias.rename 'branch -m'

如果您在 Windows 或其他不区分大小写的文件系统上,并且名称只有大小写变化,则需要使用-M ,否则 Git 将抛出分支已存在错误:

git branch -M <newname>
git branch -m old_branch_name new_branch_name

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

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

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

更多详情请参阅“ 如何在 Git 中重命名本地分支名称”。

要重命名当前分支:

git branch -m <newname>

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

  1. 切换到需要重命名的分支
  2. git branch -m <new_name>
  3. git push origin:<old_name>
  4. git push origin <new_name>:refs/heads/<new_name>

编辑(2017 年 12 月 1 日):确保运行命令git status并检查新创建的分支是否指向它自己的 ref 而不是旧的。 如果您找到对旧分支的引用,则需要使用以下命令取消设置上游:

git branch --unset-upstream

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

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

多个状态引用 - 重命名 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

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

可以使用“-m”(移动)安全地重命名分支,但必须小心使用“-M”,因为它会强制重命名,即使已经存在同名的分支。 以下是“git-branch”手册页的摘录:

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

1.重命名

如果它是您当前的分支,请执行

git branch -m new_name

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

git branch -m old_name new_name

2. 跟踪一个新的远程分支

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

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

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

这些都不起作用:

git checkout -dumb-name

git checkout -- -dumb-name

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

这是我最终修复它的方法。 Go 进入你的工作副本的.git/refs/heads,找到文件名“-dumb-name”,得到分支的hash。 然后这将检查它,使用合理的名称创建一个新分支,然后删除旧分支。

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

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

步骤 1 git branch -m old_branchname new_branchname

步骤 2 git push origin:old_branchname new_branchname

第三步git push --set-upstream origin new_branchname

要在本地重命名分支:

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

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

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

git push origin :[old-branch]

推送创建新分支的更改:

git push origin [new-branch]

试图具体回答问题(至少是标题)。

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

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

现在,当您运行git push时,远程old_branch参考将更新为您的本地new_branch

你必须知道并记住这个配置。 但是,如果您无法选择远程分支名称,但您不喜欢它(哦,我的意思是,您有充分的理由不喜欢它)并且更喜欢更清晰的名称,它可能会很有用。您当地分支机构的名称。

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

2022 年更新

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

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:old-name new-name
  2. 为您的新本地分支重置上游分支,您将全部设置好:

     git push origin -u new-name

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

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

高级 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
  1. 重命名您的本地分支。

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

git branch -m new-name

如果您在不同的分支上:

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

git push origin:old-name new-name

  1. 为新名称的本地分支重置上游分支。 切换到分支,然后:

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   

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

重命名分支:

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本地分支重置上游分支。

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

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 分支名称是一篇很好的文章。

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

如果你有这样的情况,我猜你是在 Windows 这也会导致你:

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

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

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

而已。

本地更改分支非常容易......

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

git branch -m my_new_branch

否则,如果您在master或除您想更改名称的分支之外的任何其他分支上,只需执行以下操作:

git branch -m my_old_branch my_new_branch

此外,我创建了下面的图像以在命令行上显示这一点。 在这种情况下,您在master分支上,例如:

在本地更改分支名称

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

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

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

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

首先,您要更改本地分支。 这再简单不过了:

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

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

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

在此处输入图像描述

另一种选择是根本不使用命令行。 Git GUI 客户端(例如SourceTree )消除了导致诸如此类问题在 Stack Overflow 上最受欢迎的问题的大部分语法学习曲线/痛苦。

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

一个简单的方法:

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 branch -m <new_name>

它将为您正在使用的当前分支设置新名称。

重命名另一个分支

git branch -m <old_name> <new_name>

在这里,您必须提供旧分支名称和新分支名称。

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

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

当地分行

首先从要更新名称的分支更改当前分支。 例如我有 3 个分支: branch1branch2branch3

检查当前分支:

git branch --show-current

Output 可能是: branch1

接下来,您可以更新branch2branch3的名称,但不能更新当前名称:

git branch -m old_branchname new_branchname

远程分支

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

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

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

git branch -m [old_branch] [new_branch]

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

git push origin :[old_branch]

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

git push origin :old_branch new_branch

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

  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>

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$

之前的所有答案都在谈论git branch -m 当然,操作起来很简单,但对我来说,可能有点难以记住另一个 Git 命令。 所以我试着用我熟悉的命令来完成工作。 是的,你可能猜到了。

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

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

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

重命名本地 Git 分支

git branch -m old_branch_name  new_branch_name

或者

git branch --move old_branch_name new_branch_name

如果你想:

  • 重命名 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

要重命名GitHub 桌面上的本地分支,请单击当前分支选项卡(当前存储库右侧),右键单击要重命名的分支并单击重命名。 然后会弹出一个提示,您可以在其中重命名。

在此处输入图像描述

来自 Git 本身的官方命令。 试试这个。 这个对我有用。

默认分支已重命名,如果您有本地克隆,则 {oldBranchName} 现在命名为 {NewBranchName}。 您可以通过运行以下命令来更新它。

git branch -m {oldBranchName} {NewBranchName}
git fetch origin
git branch -u origin/{NewBranchName} {NewBranchName}
git remote set-head origin -a

在 PhpStorm 中:

VCS → Git → 分支... → 本地分支 → _your_branch_ → 重命名

您所要做的就是三个步骤:

  1. .git/refs/heads下的旧分支赋予新名称
  2. .git/logs/refs/heads下的旧分支赋予新名称
  3. 更新.git/HEAD以指向您的新分支名称
  1. 重命名本地分支:

    git branch -m <old_branch_name> <new_branch_name>

  2. 推送新分支:

    git push --set-upstream origin <new_branch_name>

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

-m 表示将所有从 [old-branch] 移动到 [new-branch] 并记住您可以将 -M 用于其他文件系统。

在 Visual Studio 中:

Git → 管理分支 → 分支 → your_repositoryyour_branch → 重命名

1 Git 重命名远程和本地分支

目前我首先使用问题编号命名我的分支,但是当使用 git CLI 时,它会按字母顺序放置分支,导致 1 位和 2 位问题编号显示在错误的位置。 如果我将所有分行名称设为 3 位数,分行编号将正确排序。 它有点小事,但它是改善组织和可读性的简单方法。 任何人都可以想出一个原因,为什么以 3 位数为标准 ...

2020-03-10 19:27:23 1 37   git
2 在本地和远程重命名Git分支? [重复]

这个问题在这里已有答案: 为本地和远程Git存储库重命名主分支 15个答案 有没有办法在本地重命名Git分支并将其推送到远程分支,即使已经有很多提交推送到远程分支? 或者,是否有必要创建新的本地分支,删除旧的本地分支,然后在远程存储库上重复该操作? ...

3 git:重命名本地分支失败

我不知道为什么我重命名本地分支的尝试失败了。 我基本上克隆了项目,然后我在项目中也有一个子模块,并且我也下载了子模块代码。 但是,当我在子模块中使用git branch ,我有: 代码看起来像我在另一个分支上,但输出显示它没有名称。 然后我在网上搜索找到如何重命名本地分支,我得到了这个: 运 ...

6 Git:如何将本地分支推送到重命名的远程分支?

我有一个远程存储库和一个本地存储库。 我做了一个git fetch --all并在本地git fetch --all看到了我想要的分支,我想创建一个本地跟踪分支: 我的问题是拉的是正确的,但推的没有设置: 我的.git/config看起来正确: 我已经尝试过git pu ...

8 重命名本地和远程 Git 存储库的 master 分支

我有分支master追踪远程分支origin/master 。 我想在本地和远程将它们重命名为master-old 。 这可能吗? 对于跟踪origin/master其他用户(并且总是通过git pull更新他们的本地master分支),在我重命名远程分支后会发生什么? 他们的git pull仍 ...

9 重命名本地GIT分支不会更改'Origin'上的名称

我使用GIT管理项目的源代码,使用本地SourceTree和BitBucket远程托管代码。 我创建了一个名为“MyFeature”的新分支。 在某些时候,我重命名了分支,对“features / MyFeature”说,以便分支更好地组织(我现在拥有比以前更多的分支)。 然而,现在似乎在 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM