我刚刚使用重命名了本地分支
git branch -m oldname newname
但这只会重命名分支的本地版本。如何在GitHub上重命名一个?
我刚刚使用重命名了本地分支
git branch -m oldname newname
但这只会重命名分支的本地版本。如何在GitHub上重命名一个?
Answers:
如前所述,在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命令中的位置参数在git的较早版本(2.8?之前)中存在问题,因此别名可能会因git版本而异。有关详细信息,请参见此讨论。
git push origin :old_branch new_branch
。这将删除旧分支并推送新分支。
git branch -m new_branch
(将old_branch重命名为new_branch)2. git commit -m 'msg'
,git push
3。4.嗯,old_branch出现在Github,Google问题中,我被带到您的答案5. git push origin :old_branch
(说它已删除)6 git push origin new_branch
....然后说完* [new branch] new_branch -> old_branch
。返回Github并old_branch
再次出现。如果我在Github网络用户界面中删除,则可以选择“还原”,因此推送new_branch似乎只是在还原。
我发现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
如果您需要逐步介绍,可以阅读这篇很棒的文章
git push --set-upstream
如果您碰巧在删除远程分支之前使用github应用在本地更改分支名称,则这是最重要的部分。
只需删除旧分支并创建新分支即可。
示例(仅重命名远程分支):
git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname
您也可能应该重命名本地分支并更改推/拉位置的设置。
git push origin newname:refs/heads/newname
吗?master和newname不能指向同一提交。
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
git branch -m new-name && git push origin :master new-name
。它会失败。如果这个答案只是关于git而不是github,那么这个问题是其他几个问题的重复,应该关闭。如果确实与github有关,那么答案必须涵盖github。这个答案没有。
您可以在不使用终端的情况下执行此操作,只需创建具有新名称的分支,然后删除旧名称即可。您可以使用这篇文章来做到这一点。
本文展示了如何真正轻松地实现它。
1.要重命名本地Git分支,我们可以使用Git branch -m命令来修改名称:
git branch -m feature1 feature2
2.如果您只是在寻找重命名远程Git分支的命令,那就是“
git push -u origin feature2:feature3
请检查您是否没有在执行此操作之前,可以使用分支上的标签git tag
。
另一种方法是重命名以下文件:
.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&Remotes
如果您当前的分支名称包含斜杠(/
),则git将创建目录,如下所示:
当前分支名称: "awe/some/branch"
.git/refs/head/awe/some/branch
.git/refs/remotes/[all-remote-names]/awe/some/branch
希望分支名称: "new-branch-name"
branch
从复制文件.git/refs/*/awe/some/
.git/refs/head/
。branch
所有文件.git/refs/remotes/*/awe/some/
.git/refs/remotes/*/
。branch
文件重命名为new-branch-name
。.git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/new-branch-name
awe/some/branch
为new-branch-name
(本地和远程!)信息:这种方法可能不是最好的方法,但对于其他方法可能有问题的人仍然有效
就我而言,我需要一个附加命令
来获取重命名的分支以将其推送到。
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
和推动newbranch
以origin oldbranch
-击败我的意图。
以下命令在本地重命名分支,删除远程位置上的旧分支,然后推送新分支,将本地分支设置为跟踪新远程:
git branch -m old_branch new_branch
git push origin :old_branch
git push --set-upstream origin new_branch
就这么简单。为了在本地和远程重命名git branch,请使用以下代码段(经过测试,可像超级按钮一样工作):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
说明:
重命名步骤:
Git参考: 使用-m或-M选项,将重命名为。如果具有相应的引用日志,则将其重命名为match,并创建引用日志条目以记住分支重命名。如果存在,则必须使用-M强制进行重命名。
删除步骤:
Git参考: git push origin:experimental在源存储库中找到与实验匹配的ref(例如refs / heads / experimental),并将其删除。
更新远程仓库步骤(用于跟踪的上游参考):
Git参考:-- set-upstream对于每个最新的或成功推送的分支,请添加上游(跟踪)参考,该参考由无参数git-pull [1]和其他命令使用。有关更多信息,请参见git-config [1]中的branch..merge。