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

Rename a Git branch locally and remotely?

本问题已经有最佳答案,请猛点这里访问。

有没有一种方法可以在本地重命名Git分支并将其推送到远程分支,即使已经有许多提交推送到远程分支?

或者,是否需要创建新的本地分支、删除旧的本地分支,然后在远程存储库上重复该操作?


对,

存在用于在本地重命名分支的功能move

1
git branch --move  <new_name>

但要推动它,你必须删除旧的和推动新的

1
2
3
git checkout <new_name>
git push origin [--set-upstream] <new_name>
git push origin --delete

--set-upstream is optional, it configure the new local branch to track the pushed one

号您可以使用以下速记:

  • 本地移动(--move):

    1
    git branch -m  <new_name>
  • 推送新分支(--set upstream,可选):

    1
    git push origin [-u] <new_name>

  • 删除(--删除):

    1
    git push origin -d

铌。

多亏了托雷克的评论:

顺便说一下,值得一提的是你应该

  • 通知共享上游的其他用户您将执行此操作,以及
  • 按显示的顺序执行此操作(设置新名称,然后删除旧名称)。
  • 1的原因是这些用户需要调整。

    产生2的原因主要是效率:它避免了必须将对象重新复制到上游repo,该repo在分支删除时删除提交(大多数裸存储库都这样做,而大多数接受推送的存储库都是裸的)。