我刚刚重命名了我的本地分支使用

git branch -m oldname newname

但这只是重命名分支的本地版本。我如何在GitHub上重命名一个?


当前回答

就这么简单。为了在本地和远程重命名一个Git分支,使用这个代码片段(经过测试,效果很好):

git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>

解释:

重命名步骤:

Git参考: 使用-m或-m选项,<oldbranch>将被重命名为<newbranch>。如果 <oldbranch>有一个对应的reflog,它被重命名为匹配 <newbranch>,并且创建一个reflog条目来记住这个分支 重命名。如果<newbranch>存在,则必须使用-M强制重命名 发生。

删除步骤:

Git参考: 找到一个与experimental in匹配的ref 原始存储库(例如refs/heads/experimental),并删除它。

远程存储库步骤的更新(用于跟踪的上游参考):

Git参考: 对于每个最新或成功推送的分支,添加upstream (tracking)引用,由less参数使用 Git-pull[1]等命令。有关更多信息,请参见 分支。<名称>。在git-config[1]中合并。

其他回答

就我而言,我需要一个额外的命令,

git branch --unset-upstream

让我的重命名分支推到原点newname。

(为了便于输入),我首先git签出oldname。 然后执行如下命令:

Git branch -m newname <br/> Git push origin:oldname*或* Git push origin——delete oldname Git分支——unset-upstream Git push -u origin newname或Git push origin newname

这个额外的步骤可能只是必要的,因为我(倾向于)通过git push -u origin oldname在我的分支上设置远程跟踪。这样,当我签出oldname时,我随后只需要键入git push而不是git push origin oldname。

如果我没有在git push origin newbranch之前使用命令git branch——unset-upstream, git会重新创建oldbranch并将newbranch推到原点oldbranch——这就违背了我的意图。

以下是对我有效的方法:

首先创建新分支: Git推送github newname:refs/heads/newname 在GitHub网站上,进入设置并将默认分支更改为newname 删除oldname Git推送github——删除旧名

在Git分支中,运行:

git branch -m old_name  new_name

这将修改本地存储库中的分支名称:

git push origin :old_name new_name

这将把修改后的名称推到远程并删除旧的分支:

git push origin -u new_name

它设置本地分支来跟踪远程分支。

这就解决了问题。

只需删除旧的分支并创建新的分支。

示例(仅重命名远程分支):

git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname

您可能还应该重命名本地分支,并更改推/拉位置的设置。

我找到了三个关于如何更改Git分支名称的命令,这些命令是一种更快的方法:

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本地和远程分支