在github中重命名分支

时间:2012-03-01 22:07:26

标签: git github rename

我刚刚使用

重命名了我的本地分支
git branch -m oldname newname

但这只会重命名分支的本地版本。如何重命名 github 中的那个?

17 个答案:

答案 0 :(得分:266)

如前所述,删除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个推送操作:

     

git push origin :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命令中的位置参数在旧版(2.8之前版本)的git中存在问题,因此别名可能会因git版本而异。有关详细信息,请参阅this discussion

答案 1 :(得分:13)

以下命令对我有用:

0

答案 2 :(得分:13)

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

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

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

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

答案 3 :(得分:10)

在 GitHub 端,您可以使用新的(2021 年 1 月)“Support for renaming an existing branch

遵循本教程:https://docs.github.com/en/github/administering-a-repository/renaming-a-branch

rename branch dialog -- https://i2.wp.com/user-images.githubusercontent.com/2503052/105069955-a231fa80-5a50-11eb-982c-a114c9c44c57.png?ssl=1

参见“How do I rename branch on the GitHub website?”。

这是一种更好的方法,因为以这种方式重命名分支(在 github.com 上)将 (source):

  • 重新定位任何打开的拉取请求
  • 根据分支更新任何草稿版本
  • 移动任何明确引用旧名称的分支保护规则
  • 更新用于构建 GitHub 页面的分支(如果适用)
  • 在存储库主页上向存储库贡献者、维护者和管理员显示通知,其中包含更新存储库本地副本的说明
  • 向 git push 到旧分支的贡献者显示通知
  • 将旧分支名称的 Web 请求重定向到新分支名称
  • 在旧分支名称的 API 请求中返回“永久移动”响应

答案 4 :(得分:9)

我发现3命令如何更改你的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

如果您需要一步一步,可以阅读这篇精彩的文章

How to Rename Git Local and Remote Branches

答案 5 :(得分:3)

你可以在没有终端的情况下做到这一点,你只需要用新名称创建一个分支,然后删除旧的分支。你可以使用这篇文章来做到这一点。

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

答案 6 :(得分:3)

重命名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

答案 7 :(得分:1)

这对我有用:

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

2.。)在github网站上,转到设置并将默认分支更改为新名称

3.)删除oldname git push github --delete oldname

答案 8 :(得分:1)

本文介绍了如何轻松完成这项工作。
1。要重命名本地Git分支,我们可以使用Git branch -m命令修改名称:
git branch -m feature1 feature2
2。如果您只是在寻找重命名远程Git分支的命令,那就是“
git push -u origin feature2:feature3
在执行此操作之前,请检查分支上是否有标签。您可以使用git tag

执行此操作

答案 9 :(得分:1)

在我的情况下,我需要一个额外的命令
 的 git branch --unset-upstream
让我重命名的分支推进到origin newname

(为了便于打字),我先git checkout oldname 然后运行以下命令:

git branch -m newname
git push origin :oldname 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

如果我git branch --unset-upstream之前使用git push origin newbranch命令,git 重新创建 oldbranch并推送{{1}转到newbranch - 打败我的意图。

答案 10 :(得分:0)

这是 Hazarapet Tunanyan's 答案中的附加条件。

git branch -m old_branch new_branch         # Rename branch locally


git push origin :old_branch                 # Delete the old branch
# You might be getting an error doing the above step, skip to the next step

git push --set-upstream origin new_branch   # Push the new branch, set local branch to track the new remote

您在执行 git push origin :old_branch 时出错,因为您尝试删除的 old_branch 可能是默认分支

只需执行其他 2 个步骤,然后转到 github 并从设置中更改默认分支,即可执行 git push origin :old_branch

答案 11 :(得分:0)

就这么简单。为了在本地和远程重命名git分支,请使用以下代码段(经过测试,可像超级按钮一样工作):

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

说明:

  1. 重命名步骤:

      

    Git参考:   使用-m或-M选项,将重命名为。如果    有一个相应的reflog,它被重命名为match   ,并创建一个reflog条目以记住该分支   重命名。如果存在,则必须使用-M强制重命名   发生。

  2. 删除步骤:

      

    Git参考:    git push origin:experimental 查找与实验中的内容匹配的参考   原始存储库(例如refs / heads / experimental),然后将其删除。

  3. 更新远程回购步骤(用于跟踪的上游参考):

      

    Git参考:   -set-upstream 对于每个最新的或成功推送的分支,添加上游(跟踪)引用,该引用由无参数使用   git-pull [1]和其他命令。有关更多信息,请参见   分支..合并到git-config [1]中。

答案 12 :(得分:0)

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

git branch -m old_branch new_branch
git push origin :old_branch
git push --set-upstream origin new_branch

答案 13 :(得分:0)

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

  1. 导航您的项目目录
  2. .git/refs/head/[branch-name]重命名为.git/refs/head/new-branch-name
  3. .git/refs/remotes/[all-remote-names]/[branch-name]重命名为.git/refs/remotes/[all-remote-names]/new-branch-name
  4. 重命名 head&amp;遥控器在您的本地PC上在起源/远程服务器上

    现在已重命名分支(本地和远程!)

    注意

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

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

    • .git/refs/head/awe/some/branch
    • .git/refs/remotes/[all-remote-names]/awe/some/branch

    希望分支名称: "new-branch-name"

    1. 导航您的项目目录
    2. branch
    3. 复制.git/refs/*/awe/some/文件
    4. 将其放入.git/refs/head/
    5. branch
    6. 中复制.git/refs/remotes/*/awe/some/个文件
    7. 将它们放入.git/refs/remotes/*/
    8. 将所有已提交的branch文件重命名为new-branch-name
    9. 检查目录和文件结构现在是这样的:
      • .git/refs/head/new-branch-name
      • .git/refs/remotes/[all-remote-names]/new-branch-name
    10. 在所有远程起点/服务器上执行相同操作(如果存在)
      • info :在远程服务器上通常没有refs / remotes / *目录,因为你已经在远程服务器上;)(也许在高级git配置中它可能是可能的,但是我从未见过那个)
    11. 分支现已从awe/some/branch重命名为new-branch-name(本地和远程!)

      分支名称中的目录已被删除。

      信息: 这种方式可能不是最好的,但它仍适用于可能遇到其他方式问题的人

答案 14 :(得分:0)

  1. 下载Atlassian SourceTree(免费)。
  2. 导入存储库的本地克隆。
  3. 右键单击您的分支以重命名,在侧栏中。从上下文菜单中选择“重命名分支...”,然后重命名。
  4. 推送到原点。

答案 15 :(得分:-1)

在Git分支上,运行:

std-c++11

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

git branch -m old_name  new_name

这会将修改后的名称推送到远程服务器并删除旧分支:

git push origin :old_name new_name

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

这解决了这个问题。

答案 16 :(得分:-2)

三个简单步骤

  • (('asd',), {'level': 0}) generated docstring, access by test.__doc__ ((7, 99), {'par': None}) generated docstring, access by whatever_method.__doc__

  • git push origin head

  • git branch -m old-branch-name new-branch-name