如何在 GitHub 网站上重命名分支?

Posted

技术标签:

【中文标题】如何在 GitHub 网站上重命名分支?【英文标题】:How do I rename branch on the GitHub website? 【发布时间】:2014-07-14 01:48:29 【问题描述】:

我不知道如何运行命令行的东西。我只是没有环境。

所以我正在尝试重命名 GitHub 网站上的一个分支。默认情况下,它被命名为patch-1

是否可以在网站上重命名?

【问题讨论】:

不,不是。并且您将在 Github 上受限于其他功能,例如在没有命令行或图形 VCS 环境的情况下合并冲突。 改个名字就推回去,删掉原来的? 我正在考虑这样做,但我在这里问过,似乎我们无法真正删除分支:***.com/questions/23850490/… 自 2021 年 1 月起正式支持。见my answer below 【参考方案1】:

自 2021 年 1 月 19 日起,您现在可以直接在 github.com 上重命名分支:

Support for renaming an existing branch:

您现在可以从网络重命名任何分支,包括默认分支。

如果您一直在等待将默认分支从 master 重命名为 main,我们现在建议您使用此功能。

当分支被重命名时:

打开的拉取请求和针对重命名分支的草稿版本将自动重新定位 明确引用重命名分支的分支保护规则将被更新

注意:重命名默认分支需要管理员权限,但重命名其他分支需要写入权限。

为了帮助用户尽可能无缝地进行更改:

我们将在存储库主页上向贡献者、维护者和管理员显示通知,其中包含更新其本地存储库的说明 对旧分支的 Web 请求将被重定向 将向 REST API 调用返回“永久移动”的 HTTP 响应 将向推送到旧分支的 Git 命令行用户显示一条信息性消息

此更改是 GitHub 为支持希望重命名其默认分支的项目和维护者所做的众多更改之一。

除非维护者明确进行更改,否则分支名称不会更改,但是这个新的重命名功能应该会显着减少对确实想要更改分支名称的项目的干扰。

要详细了解我们所做的更改,请参阅github/renaming。

要了解更多信息,请参阅Renaming a branch

【讨论】:

【参考方案2】:

如果您想要基于 GUI 的解决方案 - 下载 Git 客户端“GitKraken”。它支持从 UI 执行此操作,方法是右键单击分支名称并选择“重命名 [分支名称]”。

【讨论】:

【参考方案3】:

我只是在没有将任何代码下载到我的笔记本电脑并仅使用 GitHub 站点的情况下完成了此操作。 解决方案看起来the same as @swcool’s,但我想添加有关默认分支的信息。 就我而言,重命名分支的名称不存在。

    Change the default branch (to the old branch you want to rename)

    Create a new branch (with a new name)

    此操作会将默认分支(具有旧名称的分支)的所有内容复制到新分支(具有新名称)。目前,您有两个具有相同代码的分支。

    更改默认分支(使用新名称的新分支)

    Delete the old branch

【讨论】:

感谢您提供详细信息! 在第 3 步中,将默认分支改回 master 不是更好吗?还是我错过了什么? @edjroot - 这取决于您要重命名的分支。例如,如果要将master 分支重命名为main,则需要将默认分支更改为main。诚然,问题中没有提到这一点,但对于阅读有关重命名和更改分支的任何人来说,这是一个有用的细节。【参考方案4】:

无法从 Github 网站重命名分支。您将需要执行以下操作 -

设置您的 Git 环境

关注这个 - https://help.github.com/articles/set-up-git

在本地和 Github 上重命名分支

git branch -m old_branch new_branch # Rename branch locallygit push origin :old_branch # Delete the old branchgit push --set-upstream origin new_branch # Push the new branch, set local branch to track the new remote

【讨论】:

我有 GitBash 我正在尝试使用它,是否可以使用 Bash 来做到这一点? 对第二个链接的 linkrot 投了反对票。尤其是当它是第三方网站时,请包括所有步骤。 修复和添加的步骤【参考方案5】:

如果你不想安装 Git,克隆 repo,rename the branch locally and push it back to GitHub,你可以使用GitHub API for references:

create a new branch旧的在哪里:

POST /repos/:owner/:repo/git/refs


  "ref": "refs/heads/newBranchName",
  "sha": "<SHA1 of old branch>"

delete the old branch:

DELETE /repos/:owner/:repo/git/refs/heads/oldBranchName

这样,您将“重命名”(创建+删除)分支,而无需本地 git。

并且,作为下面的commented user3533716,使用GitHub API for listing branches 获取那些分支SHA1:

GET /repos/:owner/:repo/branches

【讨论】:

SHA1 是什么?旧分支名称? 无法复制大师,404 Not Found 说:lh5.googleusercontent.com/-9WxBOLc--yk/VCIBf46NGhI/AAAAAAAATTI/… @Nakilon 是的,旧分支的 SHA1:git rev-parse &lt;old branch name&gt; @Nakilon 您需要通过身份验证才能使此 POST 成功。无身份验证意味着 404(“未找到”)。见gist.github.com/caspyin/2288960 OP 想要“从网站”重命名分支。 API 的使用远远超出了这个要求。【参考方案6】:

我想你可以,只需用新名称创建一个新分支,然后在 github 上删除旧分支。

更多详情可以看here。

【讨论】:

这不是真正的问题,是吗? @Kutzi 有点像。您从要更改的分支创建一个新分支。 这不是一个有用的答案,例如,如果分支有一个开放的 PR,而您想保留该 PR 上的讨论。 您现在可以在打开的 PR 中更改目标分支。所以我会说无论如何这是一个选择。 并且仍然会导致任何 github 问题/cmets 等中分支代码的每个链接都被破坏,所以不,这不是答案。这是一种解决方法,但真正的答案是“你不能,github 不支持 renameing 分支,但你可以 [然后这个答案] 代替”。

以上是关于如何在 GitHub 网站上重命名分支?的主要内容,如果未能解决你的问题,请参考以下文章

python 如何在Python上重命名文件的示例

删除分支后在 Github 中重命名/编辑标签?

Google Cloud Storage - 在 GUI 上重命名/移动文件/文件夹

如何在 S3 上重命名存储桶中的文件夹?

在 Android 上重命名帐户 (AccountManager)

如何重命名本地git和GitHub中拼写错误的分支[重复]