我刚刚重命名了我的本地分支使用
git branch -m oldname newname
但这只是重命名分支的本地版本。我如何在GitHub上重命名一个?
我刚刚重命名了我的本地分支使用
git branch -m oldname newname
但这只是重命名分支的本地版本。我如何在GitHub上重命名一个?
当前回答
如前所述,在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提到的。注释中的指针
注意,你可以结合这两个push操作: Git推送源:old_branch new_branch 这将删除旧的分支并推送新的分支。
这可以转换为一个简单的别名,将远程的、原始的分支和新的分支名作为参数,在~/.gitconfig中:
[alias]
branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"
用法:
git branchm origin old_branch new_branch
注意,shell命令中的位置参数在较旧的Git版本(2.8之前?)中是有问题的,因此别名可能会根据Git版本而有所不同。有关详细信息,请参阅此讨论。
其他回答
这篇文章展示了如何做到这一点非常简单。
要重命名本地Git分支,我们可以使用Git branch -m命令修改名称: Git branch -m feature1 feature2 如果你只是在寻找重命名远程Git分支的命令,这就是它: Git push -u origin feature2:feature3 在执行此操作之前,请检查分支上是否有标记。你可以用git标签做到这一点。
你不用终端也能做到。您只需要用新名称创建一个分支,然后删除旧名称。
Create a branch In your repository’s branch selector, just start typing a new branch name. It’ll give you the option to create a new branch: It’ll branch off of your current context. For example, if you’re on the bugfix branch, it’ll create a new branch from bugfix instead of master. Looking at a commit or a tag instead? It’ll branch your code from that specific revision. Delete a branch You’ll also see a delete button in your repository’s Branches page: As an added bonus, it’ll also give you a link to the branch’s Pull Request, if it has one.
我只是复制和粘贴这个内容从:创建和删除分支
就这么简单。为了在本地和远程重命名一个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 push origin :refs/heads/oldname
git push origin newname:refs/heads/newname
您可能还应该重命名本地分支,并更改推/拉位置的设置。
分支重命名现在可以通过GitHub API使用
你可以用GitHub REST API重命名一个分支。
你可以通过gh CLI轻松运行API命令,就像这样:
gh api "repos/{owner}/{repo}/branches/{branch}/rename" -f new_name={newBranch}