我刚刚重命名了我的本地分支使用
git branch -m oldname newname
但这只是重命名分支的本地版本。我如何在GitHub上重命名一个?
我刚刚重命名了我的本地分支使用
git branch -m oldname newname
但这只是重命名分支的本地版本。我如何在GitHub上重命名一个?
当前回答
这篇文章展示了如何做到这一点非常简单。
要重命名本地Git分支,我们可以使用Git branch -m命令修改名称: Git branch -m feature1 feature2 如果你只是在寻找重命名远程Git分支的命令,这就是它: Git push -u origin feature2:feature3 在执行此操作之前,请检查分支上是否有标记。你可以用git标签做到这一点。
其他回答
我找到了三个关于如何更改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本地和远程分支
另一种方法是重命名以下文件:
导航您的项目目录。 将.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和源/远程服务器上的头和远程。
分支现在重命名(本地和远程!)
注意
如果你当前的branch-name包含斜杠(/),Git会像这样创建目录:
当前分支名称:"awe/some/branch"
. /文献/头/敬畏/一些/分支 . /文献/遥控器/ [all-remote-names] /敬畏/一些/分支
祝愿分支-name: "new-branch-name"
导航您的项目目录。 从.git/refs/*/awe/some/中复制分支文件。 把它放在。git/refs/head/中。 从所有的。git/refs/remotes/*/awe/some/中复制分支文件。 把它们放在。git/refs/remotes/*/中。 将所有复制的分支文件重命名为new-branch-name。 检查目录和文件结构现在看起来是否像这样:
. / /头/ new-branch-name。参考文献 . /文献/遥控器/ [all-remote-names] / new-branch-name
对所有远程源/服务器(如果存在的话)执行同样的操作
信息:在远程服务器上通常没有refs/remotes/*目录,因为你已经在远程服务器上;)(好吧,也许在高级Git配置中这是可能的,但我从未见过)
分支现在从awe/some/ Branch重命名为new-branch-name(本地和远程!)
branch-name中的目录被移除。
信息:这种方法可能不是最好的,但它仍然适用于那些可能对其他方法有问题的人
就这么简单。为了在本地和远程重命名一个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分支中,运行:
git branch -m old_name new_name
这将修改本地存储库中的分支名称:
git push origin :old_name new_name
这将把修改后的名称推到远程并删除旧的分支:
git push origin -u new_name
它设置本地分支来跟踪远程分支。
这就解决了问题。
就我而言,我需要一个额外的命令,
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——这就违背了我的意图。