git branch -m new-branch-name 是重命名当前分支最简操作,仅修改本地分支指针,不改动提交历史和远程分支;需手动同步远程:先 git push origin --delete old-name,再 git push origin -u new-name。

git branch -m 重命名当前分支最简操作
当前在要改名的分支上,直接运行 git branch -m new-branch-name 即可。它不会动提交历史,也不影响远程——只是本地分支指针换了个名字。
常见错误是漏掉当前分支名参数,写成 git branch -m old-name new-name,这其实只在「不在目标分支时」才需要;当前就在该分支上,-m 后面只跟新名字就够了。
- 如果当前不在待改名分支,先
git checkout old-name或git switch old-name,再执行git branch -m new-name - 改完后用
git branch确认旧名已消失、新名已存在 - 别依赖
git status判断是否成功——它只显示当前分支名,不反映重命名是否完成
重命名后如何同步远程分支(关键一步)
本地改名不影响远程,原远程分支还叫 old-name,新分支 new-name 默认没推上去。不处理会导致后续 git push 报错或误推到错误分支。
标准流程分两步:先删远程旧分支,再推新分支并设置上游:
-
git push origin --delete old-name(注意不是-d,有些老 Git 版本不支持缩写) -
git push origin -u new-name(-u建立跟踪关系,否则下次git push会提示“没有上游分支”)
如果远程已有同名分支(比如别人也建了 new-name),git push origin -u new-name 会失败,得先沟通或换名。
批量重命名多个本地分支的脚本思路
Git 没有内置批量重命名命令,但可用 shell 快速处理。例如把所有 feature/xxx 改成 feat/xxx:
git branch --format='%(refname:short)' | grep '^feature/' | while read b; do new=$(echo "$b" | sed 's/^feature\//feat\//') git branch -m "$b" "$new" done
注意点:
- 务必先
git branch --format='%(refname:short)'看清实际分支名,避免正则误匹配(比如feature-test会被错改成feat-test) - 不要在脚本里直接
git push——批量推远程必须人工确认,否则可能删错分支 - Windows 用户用 Git Bash 才能跑这个,CMD/PowerShell 不兼容
while read语法
重命名时遇到 “already exists” 错误怎么办
执行 git branch -m new-name 报错 fatal: A branch named 'new-name' already exists.,说明本地已有同名分支。
这不是冲突,而是 Git 的保护机制。解决方式只有两个:
- 删掉已存在的
new-name:git branch -D new-name(-D强制删除,确保无未合并提交) - 换一个更明确的名字,比如加日期或项目前缀:
git branch -m feat/login-v2-2024
别试图用 --force 参数绕过——git branch -m 不接受该选项,强行加会报未知参数错误。


















