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

Rém*_*ras 119 git git-branch

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

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

Rém*_*ras 210

是,

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

git branch --move <old_name> <new_name>
Run Code Online (Sandbox Code Playgroud)

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

git checkout <new_name>
git push origin [--set-upstream] <new_name>
git push origin --delete <old_name>
Run Code Online (Sandbox Code Playgroud)

--set-upstream 是可选的,它配置新的本地分支以跟踪推送的分支

您可以使用以下缩写:

NB.

感谢torek的评论:

顺便提一下,值得一提的是你应该这样做

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

#1的原因是那些用户需要调整.

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

  • 非常轻微.我相信你很困惑用远程速记在本地用`branch -D`删除分支.但是在最新的git(git版本2.14.+)中没有这样的`-D`选项作为`--delete`的简写,而是小写的`-d`.所以它应该是`git push origin -d <old_name>` (4认同)