git branch -m oldname newname
重命名了本地分支,但这仅重命名了分支的本地版本。如何在GitHub上重命名一个?#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个推入操作:
可以将其转换为简单的别名,以q4312079q中的远程原始分支和新分支名称作为参数:
[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选项,
重命名。如果存在
。
删除步骤:
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 newname
或git 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
评论
git的可能副本:重命名远程分支您是否已检查管理员设置?我当前在github上的项目没有任何分支,但是您可以在那里重新命名存储库,因此我认为您也可以重命名分支。
@evanmcdonnal不,您不能从GitHub站点重命名Git分支。
这个问题的答案几乎普遍都是错误的。问题不是如何重命名git分支,而是如何重命名github分支。 github上的许多东西都绑定到一个分支,这意味着任何答案都需要涵盖这些东西。例如将master重命名为main
@gman值,似乎这些答复回答了OP的问题的实质。从技术上严格的角度,或者您当前正在研究的相关问题,OP的问题可能还没有被完美地表达出来。但是,这个问题并非来自git或GitHub的深厚技术背景。从这个角度来看,可以将其视为“初学者”或基本问题。这样,它针对此听众适当地表达和回答。固然令人沮丧,但是我认为这个问题是正确的/相关的,尤其是对于BLM之前的git / Hub使用问题的问题。