在本地和远程重命名 Git 分支? [复制]
Posted
技术标签:
【中文标题】在本地和远程重命名 Git 分支? [复制]【英文标题】:Rename a Git branch locally and remotely? [duplicate] 【发布时间】:2016-08-28 06:01:27 【问题描述】:有没有办法在本地重命名 Git 分支并将其推送到远程分支,即使已经有很多提交推送到远程分支?
或者,是否需要新建一个本地分支,删除旧的本地分支,然后对远程仓库重复操作?
【问题讨论】:
【参考方案1】:是的,
存在 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
是可选的,它配置新的本地分支来跟踪推送的分支
您可以使用以下简写:
在本地移动(--move):
git branch -m <old_name> <new_name>
推送新分支(--set-upstream,可选):
git push origin [-u] <new_name>
删除(--delete):
git push origin -d <old_name>
注意。
感谢torek的评论:
顺便说一句,值得一提的是你应该
-
通知共享上游的其他用户您将执行此操作,并且
按所示顺序执行此操作(设置新名称,然后删除旧名称)。
#1 的原因是那些用户需要调整。
#2 的原因主要是为了提高效率:它避免了将对象重新复制到上游存储库,该存储库在删除分支时会丢弃提交(大多数裸存储库都这样做,而大多数接受推送的存储库都是裸存储)
【讨论】:
非常轻微。我相信您会混淆使用远程速记branch -D
在本地删除分支。但是在最新的 git(git 版本 2.14.+)中,没有这样的-D
选项作为--delete
的简写,而是小写的-d
。所以应该是git push origin -d <old_name>
如果你有一个带有 <old_name>
的 Open PR(例如在 GitHub 上),当你删除远程分支时它会关闭,所以你需要创建一个新的,因为没有更改 PR 所基于的分支的方式(当时)(您只能更改目标)。
删除远程分支的更简洁的方法是git push origin :[old_branch_name]
。
对于某些遥控器(例如Bitbucket),在最后一步(--delete
)之前,您需要将分支“取消分配”为repo的“默认”分支以上是关于在本地和远程重命名 Git 分支? [复制]的主要内容,如果未能解决你的问题,请参考以下文章