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

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

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

49005 次浏览

是的,

特性 move的存在是为了在本地重命名分支

git branch --move <old_name> <new_name>

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

git checkout <new_name>
git push origin [--set-upstream] <new_name>
git push origin --delete <old_name>

--set-upstream是可选的,它配置新的本地分支来跟踪被推动的分支

您可以使用以下简写:

  • 本地移动(——移动) :

      git branch -m <old_name> <new_name>
    
  • 推送新分支(—— set-逆流,可选) :

      git push origin [-u] <new_name>
    
  • 删除(——删除) :

      git push origin -d <old_name>
    

注意。

感谢 Torek 的评论:

顺便说一句,值得一提的是

  1. 通知其他共享上游的用户您将要这样做,并且
  2. 按照所示顺序执行此操作(设置新名称,然后删除旧名称)。

第一个原因是这些用户需要进行调整。

第二个原因主要是因为效率: 它避免了将对象重新拷贝到上游回购中,而后者会删除分支提交(大多数裸存储库会这样做,而大多数接受推送的存储库都是裸存储库)