在Git中远程重命名分支

16 浏览
0 Comments

在Git中远程重命名分支

如果有一个我只能通过git://访问的仓库(通常只是push+pull),那么是否有一种方法可以像在本地使用git branch -m一样重命名该仓库中的分支?

admin 更改状态以发布 2023年5月24日
0
0 Comments

如果您只想远程重命名分支,而不同时重命名任何本地分支,您可以使用一个命令轻松完成:

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 /:refs/heads/,以基于旧的远程跟踪分支推送一个新的远程分支,然后执行 git push : 删除旧的远程分支。

0
0 Comments

您只需使用所需名称创建新的本地分支,将其推送到远程,然后删除旧的远程分支:

$ 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时,您将收到错误“删除当前分支被禁止”。

0