如何重命名本地 Git 分支?

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

81

重命名本地分支:

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

现在您需要将这些更改传播到远程服务器上。

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

git push origin :[old-branch]

要推送创建新分支的更改:

git push origin [new-branch]

78

更新 2023

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

git checkout old-name

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

git branch --list

在完全明确之后,请按照以下步骤操作:

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

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

git checkout master

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

虽然直接重命名远程分支不可能,但是重命名的过程包括以下两个简单步骤:

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

 git push origin :old-name new-name
重置上游分支与您的新本地分支,这样您就可以全部设置好了:
git push origin -u new-name

非常好的解释。用户可能还需要运行 git branch --unset-upstream,然后再运行 git push --set-upstream origin branch_name 来清理一切。 - Nicolas Castro
1
非常有帮助。谢谢。 - Arunkumar

70

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

您还可以重命名本地分支,但仍要跟踪旧名称在远程上的情况。

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引用指针重命名为实际上在origin上的old_branch分支。然而,基于你心灵的安全起见,我强烈反对这样做。


49

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

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

45

高级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
有没有特定的原因直接操作文件而不使用相应的命令? - U. Windl
好知道但危险。@U.Windl:我想有些人想要冒险。 - Amrit Shrestha

42
  1. 重命名本地分支。

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

git branch -m new-name

如果您在不同的分支上:

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

git push origin :old-name new-name

  1. 重置new-name本地分支的上游分支。切换到该分支,然后执行:

git push origin -u new-name

或者使用以下三个步骤快速完成:

# 本地重命名分支

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


32

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

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

可能应该编辑现有的答案(例如 https://dev59.com/PGw15IYBdhLWcg3wd7pj#37320788),而不是发布新的答案。有很多回答说了95%相同的内容(这可能会令人困惑)。 - U. Windl

30

可能如其他人所述,这是分支命名中的大小写不匹配问题。

如果你遇到了这种情况,我猜测你使用的是Windows系统,这也会导致以下情况:

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

那么你需要进行一个中间步骤:

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

没有更多了。


1
请注意,这种情况也可能在 Mac 上出现,它的文件系统同样(非常令人恼火地)不区分大小写。 - Jon V
或者,您可以使用“-M”而不是“-m”来在单个步骤中执行此类“大小写修复”重命名。 - Jon Schneider

27

在本地更改分支非常容易,只需按照以下步骤操作:

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

git branch -m my_new_branch

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

Otherwise, if you are on master or any other branch other than the one you'd like to change the name, simply do:
git branch -m my_old_branch my_new_branch

另外,我创建了下面的图片以展示在命令行上如何操作。例如,在本例中,您正在master分支上:

Change branch name locally


25

要重命名当前分支(除了游离的 HEAD 状态),你也可以使用这个别名:

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

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