我只是使用

git branch -m oldname newname
重命名了本地分支,但这仅重命名了分支的本地版本。如何在GitHub上重命名一个?

评论

git的可能副本:重命名远程分支

您是否已检查管理员设置?我当前在github上的项目没有任何分支,但是您可以在那里重新命名存储库,因此我认为您也可以重命名分支。

@evanmcdonnal不,您不能从GitHub站点重命名Git分支。

这个问题的答案几乎普遍都是错误的。问题不是如何重命名git分支,而是如何重命名github分支。 github上的许多东西都绑定到一个分支,这意味着任何答案都需要涵盖这些东西。例如将master重命名为main

@gman值,似乎这些答复回答了OP的问题的实质。从技术上严格的角度,或者您当前正在研究的相关问题,OP的问题可能还没有被完美地表达出来。但是,这个问题并非来自git或GitHub的深厚技术背景。从这个角度来看,可以将其视为“初学者”或基本问题。这样,它针对此听众适当地表达和回答。固然令人沮丧,但是我认为这个问题是正确的/相关的,尤其是对于BLM之前的git / Hub使用问题的问题。

#1 楼

如前所述,尽管使用的命令比必要的更为冗长,但删除GitHub上的旧命令并重新推送:
git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local

剖析一下命令,git push本质上是: >
git push <remote> <local_branch>:<remote_branch>

因此,在未指定local_branch的情况下进行推送本质上意味着“从本地存储库中获取任何内容,并将其设置为远程分支”。我一直认为这完全是个难题,但是它就是这样做的。
从Git 1.7开始,还有一种删除远程分支的替代语法:
git push origin --delete name_of_the_remote_branch
注释中的void.pointer

请注意,您可以组合2个推入操作:
可以将其转换为简单的别名,以q​​4312079q中的远程原始分支和新分支名称作为参数:
[alias]
    branchm = "!git branch -m   && git push  :  -u #"

用法:
git branchm origin old_branch new_branch

注意shell命令中的位置参数在旧版(2.8版之前)的Git中存在问题,因此别名可能会因Git版本而异。有关详细信息,请参见此讨论。

评论


请注意,您可以结合使用2个push操作:git push origin:old_branch new_branch。这将删除旧分支并推送新分支。

–void.pointer
2014年8月4日在2:54



是否有任何原因导致在删除旧分支之前无法推送新分支?我个人更喜欢在创建操作成功之后执行删除操作的过程,以防万一出错。

– jmort253
15年2月16日在9:01

不起作用。它将分支简单地重新命名为Github。

–geoff
16-2-14在4:21

@AdamParkin 1. git分支-m new_branch(将old_branch重命名为new_branch)2. git commit -m'msg',3. git push 4.嗯,old_branch显示在Github,Google问题中,我带您得到答案5。 git push origin:old_branch(说已删除)6. git push origin new_branch ...完成,然后说* [新分支] new_branch-> old_branch。回到Github,old_branch再次出现。如果我在Github网络用户界面中删除,则可以选择“还原”,因此推送new_branch似乎只是在还原。

–凯文
16年6月28日在21:34

要注意的一件事是,当您重命名分支时,针对该拉取请求打开的任何拉取请求都将自动关闭。我们必须重命名分支,然后手动重新打开所有拉取请求...。

– jmort253
19年2月25日在12:20

#2 楼

以下命令对我有用:
git push origin :old-name-of-branch-on-github
git branch -m old-name-of-branch-on-github new-name-for-branch-you-want
git push origin new-name-for-branch-you-want


评论


这是有效的简短答案。顺便说一句,第一个命令也可以放在答案的最后一个命令中。

–user218867
19-10-17在7:02

实际上,我只做了两次,就可以在github上工作了。

– spozun
20年6月16日在1:36

应该是公认的答案-简洁明了。谢谢!

– Bill
20-10-8在19:34

值得一提的是,您需要将分支检出,否则第一个命令只会删除远程分支。

–克雷格W
20-10-28在0:53

#3 楼

我找到了三个有关如何更改Git分支名称的命令,这些命令是实现此目的的较快方法: :
如何重命名Git本地和远程分支

评论


如果您碰巧在删除远程分支之前使用github应用在本地更改分支名称,则git push --set-upstream是最重要的部分。

–路易·杨
20/04/27在11:22

#4 楼

您可以在没有终端的情况下进行操作。您只需要使用新名称创建分支,然后删除旧名称即可。

创建分支
在存储库的分支选择器中,只需开始输入新的分支
名称。它会为您提供创建新分支的选项:

它将从您当前的上下文中分支出来。例如,如果您位于错误修复程序分支上,则它将从错误修复程序而不是
master创建一个新分支。看着提交还是标记?它将从该特定版本中分支代码

删除分支
您还将在存储库的“分支”页面中看到一个删除按钮:

另外,如果有分支,它还会为您提供分支的Pull
请求的链接。

#5 楼

只需删除旧的分支并创建一个新分支即可。

示例(仅重命名远程分支):分支并更改推/拉位置的设置。

评论


第二个命令不应该是git push origin newname:refs / heads / newname吗? master和newname不能指向同一提交。

–史蒂夫·弗利(Steve Folly)
2012年3月1日22:48

“主人”仅作为示例,现在将更改。

– Vi。
2012年3月1日22:53

也许应该颠倒两个命令的顺序(即先上传新名称,然后删除旧名称)

– Vi。
15年1月2日在23:12

@gman,不重命名Git-wise也重命名它为Github-wise吗?

– Vi。
20年6月15日在18:43

试试看。 git push origin:refs / heads / master

– gman
20年6月16日在1:46

#6 楼

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

所以结论是:
git branch -m new-name
git push origin :old-name new-name
git push origin -u new-name


评论


这是针对git的,而GitHub在git下,因此它可以正常工作,并且可以与我和其他人一起使用

–阿卜杜拉曼·穆罕默德(Abdelrahman Mohamed)
20年6月15日在11:45

没用尝试第一步和第二步git branch -m新名称&& git push origin:master新名称。它会失败。如果此答案仅与git有关而不与github有关,则此问题是其他几个问题的重复,应该关闭。如果确实与github有关,那么答案必须涵盖github。这个答案没有。

– gman
20 Jun 15'11:51



对我来说,我只需要执行步骤1和2,这个过程就可以了

–coderboi
14小时前

#7 楼

就那么简单。为了在本地和远程重命名Git分支,请使用此代码段(经过测试并像超级按钮一样工作):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>

解释: />
Git参考:
使用-m或-M选项,将重命名为。如果
具有相应的引用日志,则将其重命名为match
,并创建引用日志条目以记住分支
重命名。如果存在,则必须使用-M强制重命名



删除步骤:


Git参考:
git push origin:experimental在源存储库中找到与实验匹配的ref(例如refs / heads / experimental),并将其删除。更新远程存储库步骤(用于跟踪的上游参考):


Git参考:
--set-upstream对于最新或成功推送的每个分支,请添加上游(跟踪)参考,由无参数
分支。<名称>。在git-config [1]中合并。


#8 楼

这是对我有用的方法:


首先创建新分支:
git push github newname :refs/heads/newname



在GitHub网站上,转到设置并将默认分支更改为newname


删除oldname
git push github --delete oldname




#9 楼

本文显示了如何真正轻松地实现它。


要重命名本地Git分支,我们可以使用Git branch -m命令来修改名称:
 git branch -m feature1 feature2



如果您只是在寻找重命名远程Git分支的命令,就是这样:做这个。您可以使用git tag做到这一点。



评论


“本文”指的是什么?请通过编辑您的答案来回应,而不是在评论中。

– Peter Mortensen
20 Jun 24'10:19



#10 楼

另一种方法是重命名以下文件:

导航项目目录。
.git/refs/head/[branch-name]重命名为.git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/[branch-name]重命名为.git/refs/remotes/[all-remote-names]/new-branch-name

重命名head
现在分支已重命名(本地和远程!)

注意
如果当前分支名称包含斜杠(/)Git将创建如下目录:
当前分支名称:"awe/some/branch"

.git/refs/head/awe/some/branch
.git/refs/remotes/[all-remote-names]/awe/some/branch

希望分支-名称:"new-branch-name"

导航项目目录。
branch复制.git/refs/*/awe/some/文件。
将其放在.git/refs/head/中。
从所有branch复制.git/refs/remotes/*/awe/some/文件。
将它们放入.git/refs/remotes/*/中。
将所有复制的branch文件重命名为new-branch-name
检查目录和文件结构现在是否看起来像这样:


.git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/new-branch-name


在所有远程源/服务器上执行相同操作(如果它们存在)



信息:在远程服务器上,通常没有refs / remotes / *目录,因为您已经在远程服务器上了;)(嗯,也许在高级Git配置中,这可能是可行的,但我从未见过)

分支现在从awe/some/branch重命名为new-branch-name(本地和远程!)
分支名称中的目录已删除。

信息:这种方法可能不是最好的,但是它仍然适用于其他方式可能遇到问题的人

#11 楼

就我而言,我需要一个额外的命令,
git branch --unset-upstream

,以获得重命名的分支以推送到origin newname
(为便于键入),我首先输入git checkout oldname
然后运行以下命令:
git branch -m newname <br/> git push origin:oldname *or* git push origin --delete oldname git branch --unset-upstream git push -u origin newnamegit push origin newname
仅由于我(倾向于)在分支机构上设置了远程跟踪,才可能需要执行此额外步骤通过git push -u origin oldname。这样,当我签出oldname时,我随后只需要键入git push而不是git push origin oldname。目的。

评论


@gman点已采取。我的解决方案在GitHub存储库的本地git副本上重命名后,在本地使用git远程重命名GitHub上的分支。因此,当您想使用命令行而不是GitHub网站界面,并且拥有一个本地克隆并且您也想对其进行更新时,它可能被视为一种专用的解决方案。感谢您强调此区别,并澄清此答案是针对特殊情况,而不是一般解决方案。

– SherylHohman
20 Jun 14'23:53



问题是github将功能与分支联系起来。尝试将master重命名为main,说明将失败。

– gman
20年6月15日,0:36

#12 楼

以下命令在本地重命名分支,删除远程位置上的旧分支,然后推送新分支,将本地分支设置为跟踪新远程:

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


评论


尽管您的代码段可能会解决问题,但您应该描述代码的目的(解决问题的方式)。此外,您可能想查看stackoverflow.com/help/how-to-answer

–艾哈迈德·F(Ahmad F)
18年3月15日在11:30

#13 楼

在Git分支上,运行:
git branch -m old_name  new_name

这将修改本地存储库上的分支名称:
git push origin :old_name new_name

这会将修改后的名称推送到远程并删除旧分支:
git push origin -u new_name

设置本地分支以跟踪远程分支。
这解决了这个问题。

#14 楼


(免费)下载Atlassian Sourcetree。
导入存储库的本地副本。
在侧栏中右键单击要重命名的分支。从上下文菜单中选择“重命名分支...”,然后将其重命名。
推到原点。


评论


谢谢,但是我不得不切换到分支以及导入它。

– Flash Sheridan
17年8月24日在18:29

链接断开(404)。

– Peter Mortensen
20年6月24日在10:16

#15 楼

三个简单的步骤




评论


不起作用它所做的就是在github上创建一个新分支。它没有重命名分支。 pastebin.com/dDh06HEb

– gman
20年6月22日,0:48