git 分支重命名:本地和远程分支怎么改名
分支名打错了或想改名?本文讲清重命名本地分支、以及已推到远程的分支改名的完整三步,含 origin 旧分支删除与重新关联。
场景:分支名打错字了,或者想改成更规范的名字(如 fix-login → fix/login)。分两种情况:只改本地,或连远程一起改。
先搞清一个事实
分支本质是指向某次提交的指针,重命名只是改指针的名字,不碰提交历史,完全安全。
一、重命名本地分支
# 当前就在该分支上:
git branch -m 新分支名
# 不在该分支上,指定旧名新名:
git branch -m 旧分支名 新分支名
-m(move)就是重命名。执行后 git branch 会看到新名字。
二、重命名已推送到远程的分支(三步)
远程分支改名 = 推一个新名分支 + 删除旧名分支:
# 1. 先改本地分支名
git branch -m 旧名 新名
# 2. 推新名分支并关联跟踪
git push origin 新名
git push origin -u 新名 # -u 建立本地新名与远程新名的追踪
# 3. 删除远程的旧名分支
git push origin --delete 旧名
完成。此时远程只有新名字,本地指向也正确。
验证是否改成功
git branch -a # 看本地+远程分支名
git remote show origin # 查看远程分支与本地追踪关系
完整示例
# 假设要把 feature-login 改名为 feature/login
git branch -m feature-login feature/login
git push origin feature/login
git push origin -u feature/login
git push origin --delete feature-login
多人协作时的注意
- 若远程旧分支别人也在用,删除会打断他们,改名前先沟通,或用新名字重推、保留旧分支的折中。
- 删除远程分支命令
git push origin --delete 旧名要谨慎,确认无其他人使用。 - 本地旧分支的追踪引用可能残留,可用
git remote prune origin清理。
常见问题
- push 提示旧分支没有上游:说明本地旧名分支的追踪还指向远程旧名,重推新名后用
-u重建追踪即可。 - 改名后 pull 报错:检查
.git/config里分支的 merge 配置是否还是旧名,重设git branch --set-upstream-to=origin/新名。
一句话速记
本地改名 git branch -m;远程改名 = push 新名 + push --delete 旧名。
?
常见问题 FAQ
重命名分支会影响提交历史吗?
不会。分支只是指向某次提交的指针,改名只是改指针的名字,提交历史、文件内容完全不变。
正在某个分支上,能重命名它吗?
可以。在分支内用 git branch -m 新名 即可重命名当前分支;不在该分支则需 git branch -m 旧名 新名。
远程分支改名后旧的还在怎么办?
改名其实是「新推一个 + 删掉旧的」。推新名分支并删掉远程旧分支(git push origin --delete 旧名),同时更新本地追踪。若多人共用,改名前最好先沟通。
会不会删掉别人的远程分支?
会。git push origin --delete 旧名 删除的是远程那个分支,若团队里别人也在用它,删除会影响他们,务必先确认或改用新分支保留旧分支。