在github中重命名分支

enc*_*nce 256 git rename github

我只是使用重命名我的本地分支

git branch -m oldname newname
Run Code Online (Sandbox Code Playgroud)

但这只会重命名分支的本地版本.如何在github中重命名一个?

Ada*_*kin 277

如上所述,删除Github上的旧版并重新推送,尽管使用的命令比必要的更冗长:

git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local
Run Code Online (Sandbox Code Playgroud)

简单.稍微解析一下命令,git push命令基本上是:

git push <remote> <local_branch>:<remote_branch>
Run Code Online (Sandbox Code Playgroud)

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

编辑:Git 1.7开始,有一种删除远程分支的替代语法:

git push origin --delete name_of_the_remote_branch
Run Code Online (Sandbox Code Playgroud)

编辑:正如@ void.pointer在评论中提到的那样

请注意,您可以组合2个推送操作:

git push origin :old_branch new_branch

这将删除旧分支并推送新分支.

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

[alias]
    branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"
Run Code Online (Sandbox Code Playgroud)

用法:

git branchm origin old_branch new_branch
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,您可以组合2个推送操作:`git push origin:old_branch new_branch`.这将删除旧分支并推送新分支. (28认同)
  • 不行.它将简单地将分支放回Github上的旧名称. (5认同)
  • 是否有任何理由在删除旧分支之前无法推送新分支?我个人更喜欢在创建操作成功后发生删除操作的进程,以防出现问题. (4认同)
  • 要注意的一件事是,当您重命名分支时,针对该拉取请求打开的任何拉取请求都将自动关闭。我们必须重命名分支,然后手动重新打开所有拉取请求。 (2认同)

rne*_*ves 17

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

创建一个分支

在您的存储库的分支选择器中,只需开始输入一个新的分支名称。它将为您提供创建新分支的选项:

创建一个分支

它将脱离您当前的上下文。例如,如果您在 bugfix 分支上,它将从 bugfix 而不是 master 创建一个新分支。而是查看提交或标签?它将从该特定修订版分支您的代码。

删除一个分支

您还将在存储库的分支页面中看到一个删除按钮:

删除一个分支

作为额外的奖励,它还会为您提供一个指向分支的拉取请求的链接(如果有的话)。

我只是复制并粘贴以下内容:创建和删除分支


Tai*_*aiz 15

以下命令对我有用:

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
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,您需要签出分支,否则第一个命令只会删除远程分支。 (2认同)

Abd*_*med 14

在 Git 本地和远程重命名分支

1. 重命名您的本地分支。

如果您在要重命名的分支上:

git branch -m new-name
Run Code Online (Sandbox Code Playgroud)

如果您在不同的分支:

git branch -m old-name new-name
Run Code Online (Sandbox Code Playgroud)

2. 删除旧名远程分支,推送新名本地分支。

git push origin :old-name new-name
Run Code Online (Sandbox Code Playgroud)

3. 重置新名称本地分支的上游分支。

切换到分支,然后:

git push origin -u new-name
Run Code Online (Sandbox Code Playgroud)

所以结论是:

git branch -m new-name
git push origin :old-name new-name
git push origin -u new-name
Run Code Online (Sandbox Code Playgroud)


Vi.*_*Vi. 13

只需删除旧分支并创建新分支即可.

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

git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname
Run Code Online (Sandbox Code Playgroud)

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

  • 第二个命令不应该是`git push origin newname:refs/heads/newname`吗?master 和 newname 可能不会指向同一个提交。 (2认同)

Haz*_*yan 12

我发现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
Run Code Online (Sandbox Code Playgroud)

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

如何重命名Git本地和远程分支


avi*_*amg 11

就那么简单。为了在本地和远程重命名 Git 分支,请使用此代码片段(经过测试并且效果非常好):

git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
Run Code Online (Sandbox Code Playgroud)

解释:

  1. 重命名步骤:

Git 参考: 使用 -m 或 -M 选项,<oldbranch> 将重命名为 <newbranch>。如果 <oldbranch> 有相应的引用日志,则会将其重命名以匹配 <newbranch>,并创建一个引用日志条目来记住分支重命名。如果 <newbranch> 存在,则必须使用 -M 强制进行重命名。

  1. 删除步骤:

Git参考: git push origin :experimental在origin存储库中找到与experimental匹配的ref(例如refs/heads/experimental),并将其删除。

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

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


Von*_*onC 11

On GitHub side, you can use the new (Jan. 2021) "Support for renaming an existing branch"

Follow this tutorial: https://docs.github.com/en/github/administering-a-repository/renaming-a-branch

重命名分支对话框 -- https://i2.wp.com/user-images.githubusercontent.com/2503052/105069955-a231fa80-5a50-11eb-982c-a114c9c44c57.png?ssl=1

See "How do I rename branch on the GitHub website?".

This is a better approach, because renaming a branch that way (on github.com) will (source):

  • Re-target any open pull requests
  • Update any draft releases based on the branch
  • Move any branch protection rules that explicitly reference the old name
  • 更新用于构建 GitHub 页面的分支(如果适用)
  • 在存储库主页上向存储库贡献者、维护者和管理员显示通知,其中包含更新存储库本地副本的说明
  • 向 git push 到旧分支的贡献者显示通知
  • 将旧分支名称的 Web 请求重定向到新分支名称
  • 在旧分支名称的 API 请求中返回“永久移动”响应