如何重命名 Git 分支(本地和远程)
重命名分支:git branch -m 新名(本地);远程没有"重命名",需推新名分支 git push -u origin 新名,删旧远程分支 git push origin --delete 旧名,并让协作者更新本地跟踪。
本地重命名:git branch -m 新分支名。远程没有重命名概念,要"推新的、删旧的":git push -u origin 新名 建立新远程分支,git push origin --delete 旧名 删掉旧的。
完整流程
# 1. 本地重命名(站在要改名的分支上)
git checkout old-name
git branch -m new-name
# 2. 推送新分支并建立跟踪
git push -u origin new-name
# 3. 删除远程旧分支
git push origin --delete old-name
协作者要做什么
远程分支名变了,其他人的本地引用会失效,他们需要:
git fetch --prune # 清掉旧的 origin/old-name
git checkout new-name # 检出新的(本地有同名旧分支的话先处理)
注意事项
- GitHub 上有基于旧分支的开放 PR:删旧分支会让 PR 自动关闭!先去 PR 页面把目标分支改成新分支,或在 GitHub 网页直接 Rename(它会帮你转移 PR);
- main/master 这类保护分支改名(如 master→main)GitHub 有专门的界面操作,会自动处理重定向,别用命令行删建。
常见问题(FAQ)
Q:改名后 CI/保护规则会跟着走吗?
分支保护规则、CI 触发条件通常按名字匹配——改名后去检查一遍这些配置。
Q:本地没推过的分支改名?
纯本地分支只需第一步 git branch -m 新名,远程无感知。
Q:GitHub 网页改名和命令行有区别吗?
网页改名(分支页面的 Rename 按钮)会自动处理开放 PR 的重定向和协作者提示,比重命名的命令行三板斧更友好。