关于git:在github中重命名分支

Renaming a branch in github

我刚刚用

1
git branch -m oldname newname

但这只会重命名分支的本地版本。如何在GitHub中重命名?


如前所述,删除Github上的旧命令&re push,尽管所使用的命令比需要的命令要详细一些:

1
2
git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local

简单。稍微分析一下命令,git push命令本质上是:

1
git push <remote> <local_branch>:<remote_branch>

因此,在没有指定本地分支的情况下进行推送,本质上意味着"从本地存储库中不获取任何内容,并使其成为远程分支"。我一直认为这是完全笨拙的,但它是这样做的。

编辑:从git 1.7开始,删除远程分支有一个替代语法:

1
git push origin --delete name_of_the_remote_branch

编辑:如注释中@void.pointer所述

Note that you can combine the 2 push operations:

git push origin :old_branch new_branch

This will both delete the old branch and push the new one.

这可以转换为一个简单的别名,在~/.gitconfig中,它使用远程、原始分支和新分支名称作为参数:

1
2
[alias]
    branchm ="!git branch -m $2 $3 && git push $1 :$2 $3 -u #"

用途:

1
git branchm origin old_branch new_branch

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


以下命令对我有效:

1
2
3
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


只需移除旧分支并创建新分支。

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

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

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


我已经找到了3个命令如何更改Git分支名称,这些命令是实现这一点的更快方法

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


您可以在没有终端的情况下完成这项工作,只需要用新名称创建一个分支,然后删除后面的旧分支。你可以用这篇文章来做。

https://github.com/blog/1377-create-and-delete-branches


在我的情况下,我需要一个额外的命令git branch --unset-upstream。让我改名的分支机构向上推到origin newname

(为了便于打字),我先用git checkout oldname。然后运行以下程序:

埃多克斯1〔3〕git push origin :oldnamegit push origin --delete oldnamegit branch --unset-upstreamgit push -u origin newnamegit push origin newname

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

如果我在git push origin newbranch之前不使用git branch --unset-upstream命令,git会重新创建oldbranch并将newbranch推到origin oldbranch上,这就破坏了我的意图。


本文将展示如何真正轻松地完成这项工作。1。要重命名本地Git分支,可以使用git branch-m命令修改名称:江户十一〔一〕号2。如果您只是在寻找命令来重命名一个远程git分支,这就是它"埃多克斯1〔2〕在执行此操作之前,请检查分支上是否没有标记。你可以用git tag来实现。


以下是我的工作:

1.)首先创建新分支:git push github新名称:refs/heads/newname

2.)在Github站点上,转到设置并将默认分支更改为newname。

3.)删除旧名称git push github—删除旧名称


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

1
2
3
git branch -m old_branch new_branch
git push origin :old_branch
git push --set-upstream origin new_branch


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

  • 浏览项目目录
  • .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
  • 在本地PC和源/远程服务器上重命名head&remote s

    分支现在被重命名(本地和远程!)敬告

    如果当前分支名称包含斜杠(/个),git将创建如下目录:

    当前分行名称:"awe/some/branch"

    • 埃多克斯1〔10〕
    • 江户十一〔11〕。

    愿望分支机构名称:"new-branch-name"

  • 浏览项目目录
  • .git/refs/*/awe/some/复制branch文件
  • 把它放在.git/refs/head/里。
  • 从所有.git/refs/remotes/*/awe/some/复制branch文件
  • 把它们放在以东十一〔十八〕里。
  • 将所有opied branch文件重命名为new-branch-name文件。
  • 检查目录和文件结构现在是否如下所示:
    • 埃多克斯1〔5〕
    • 江户十一〔七〕号
  • 在所有远程源/服务器上执行相同的操作(如果存在)
    • 信息:在远程服务器上,通常没有refs/remotes/*目录,因为您已经在远程服务器上;)(可能在高级git配置中,这是可能的,但我从未见过)
  • 分支机构现在从awe/some/branch更名为new-branch-name(本地和远程!)已删除分支名称中的目录。

    信息:这种方法可能不是最好的,但它仍然适用于那些可能与其他方法有问题的人。


  • 下载Atlassian SourceTree(免费)。
  • 导入存储库的本地克隆。
  • 在侧边栏中右键单击要重命名的分支。从上下文菜单中选择"重命名分支…",然后将其重命名。
  • 推到原点。