在Git中远程重命名分支
在Git中远程重命名分支
如果有一个我只能通过git://
访问的仓库(通常只是push+pull),那么是否有一种方法可以像在本地使用git branch -m
一样重命名该仓库中的分支?
admin 更改状态以发布 2023年5月24日
如果您只想远程重命名分支,而不同时重命名任何本地分支,您可以使用一个命令轻松完成:
git push/ :refs/heads/ :
我写了这个脚本(git-rename-remote-branch),提供了一个方便的快捷方式来轻松执行上述操作。
作为Bash函数:
git-rename-remote-branch() { if [ $# -ne 3 ]; then echo "Rationale : Rename a branch on the server without checking it out." echo "Usage : ${FUNCNAME[0]}" echo "Example : ${FUNCNAME[0]} origin master release" return 1 fi git push $1 $1/$2\:refs/heads/$3 :$2 }
为了整合@ksrb的评论:基本上这个脚本执行了两次推送,第一次是 git push
,以基于旧的远程跟踪分支推送一个新的远程分支,然后执行 git push
删除旧的远程分支。
您只需使用所需名称创建新的本地分支,将其推送到远程,然后删除旧的远程分支:
$ git branch new-branch-name origin/old-branch-name $ git push origin --set-upstream new-branch-name $ git push origin :old-branch-name
然后,为了查看旧分支名称,存储库的每个客户端都必须执行以下操作:
$ git fetch origin $ git remote prune origin
注意:如果您的旧分支是主要分支,则应更改主要分支设置。否则,当您运行$ git push origin :old-branch-name
时,您将收到错误“删除当前分支被禁止”。