一句话总结
要做的就 3 件事:
- 把本地分支
main改名为master; - 把远程仓库的默认分支从
main改成master; - 把远程的旧
main分支删掉,并更新本地跟踪关系。
整体流程示意
下面是整个操作的简化流程图,你可以先有个整体印象:
flowchart LR
A[确认当前在 main 分支] --> B[本地重命名为 master\n git branch -m main master]
B --> C[推送新分支到远程\n git push -u origin master]
C --> D[GitHub 上将默认分支改为 master]
D --> E[删除远程旧 main 分支\n git push origin --delete main]
E --> F[设置本地 master 跟踪远程 master\n git branch -u origin/master]
第 0 步:先确认当前状态
- 打开终端(Windows 下是 Git Bash / PowerShell / VS Code 终端),进入你的项目目录。
- 看一下当前分支:
输出前面有git branch*的是当前分支,例如:
如果你已经在main * mastermain分支上,那很好;如果不在,先切换:git checkout main - 看一下远程分支:
一般你会看到类似:git branch -a
这说明远程默认分支叫main * master remotes/origin/main remotes/origin/HEAD -> origin/mainmain。
第 1 步:本地把 main 改名为 master
1.1 重命名本地分支
Git 官方推荐用 git branch --move(简写 -m)来重命名分支。
我们现在要把 main 改成 master:
# 确保当前在 main 分支
git checkout main
# 把 main 重命名为 master
git branch -m main master
说明:
git branch -m main master意思是:把名为main的分支改名为master。- 如果当前已经在
main分支上,也可以直接写:
这表示“把当前分支改名为git branch -m mastermaster”。
再执行一次:
确认现在本地已经没有git branchmain,只有master:
```text
- master
(可能还有别的分支,比如 dev 之类)
```
第 2 步:把新的 master 推送到远程(GitHub)
本地改名只在你自己的电脑上生效,要让 GitHub 上也出现 master 分支,需要推送:
# 把本地的 master 分支推送到远程,并设置上游跟踪
git push -u origin master
-u等同于--set-upstream,表示以后这个分支默认推送到origin master。- 执行完后,远程会有一个新分支
origin/master。
第 3 步:在 GitHub 上把默认分支改为 master
GitHub 仓库的「默认分支」决定了:
- 打开仓库时默认看到哪个分支;
- PR 默认合并到哪个分支;
- 哪些分支可以受到保护等。
3.1 打开 GitHub 仓库的 Settings
- 用浏览器打开你的 GitHub 仓库页面,例如:
https://github.com/zhugq404/STM32F407ZET-FreeRTOS - 点击仓库下的 Settings(设置) 标签。
3.2 修改默认分支
根据 GitHub 官方文档: - 在 Settings 页面左侧找到 Branches(分支) 或直接找到 Default branch(默认分支) 区域。
- 右侧有一个默认分支名称(比如
main),旁边有一个切换按钮(双向箭头)。 - 点击切换按钮,在弹出的下拉框中选择 master。
- 点击 Update 按钮,确认弹出的警告。
完成后,GitHub 会:
- 把仓库的默认分支改成
master; - 以后新建 PR、查看仓库默认都用
master。
第 4 步:删除远程的旧 main 分支
现在远程已经有 master 作为默认分支了,旧的 main 分支可以删掉。
# 删除远程的 main 分支
git push origin --delete main
--delete 选项用于删除远程分支。
执行完后,远程仓库就只有 master 了,不会再有 main。
第 5 步:更新本地 master 的跟踪关系
如果你之前是用 git push -u origin master 推送的,那本地 master 已经跟踪了 origin/master,这步可以跳过。
如果你没有用 -u,可以手动设置:
# 设置本地 master 跟踪远程 master
git branch -u origin/master master
git branch -u / --set-upstream-to 用于建立本地分支与远程分支的跟踪关系。
之后,你就可以简单地:
git pull
git push
而不需要每次写 origin master。
第 6 步:如果别人也在用这个仓库(团队协作)
如果你是「唯一开发者」,可以跳过这一节。
如果有队友也在这个仓库上工作,改名后他们需要同步一下,否则下次 git pull 会报错。
6.1 他们可以怎么做?
比较简单的两种方式:
方式 A:重新 clone(最省事)
- 让队友备份自己本地的修改(比如先提交并推送,或者备份到别的目录)。
- 删除本地旧仓库目录。
- 重新 clone:
这样拿到的仓库默认分支就是新的git clone https://github.com/zhugq404/STM32F407ZET-FreeRTOS.gitmaster。方式 B:在现有仓库上改名
根据一些项目的分支改名建议,队友可以在旧仓库里执行:# 1. 把本地 main 改名为 master git branch -m main master # 2. 拉取远程的最新信息 git fetch origin # 3. 设置本地 master 跟踪新的远程 master git branch -u origin/master master # 4. 清理远程跟踪分支里旧的 main 引用 git remote prune origingit remote prune origin会清理本地记录的「远程分支」信息,把已经不存在的分支删掉。
第 7 步:可选——全局配置默认分支为 master
如果你以后新建仓库就想默认用 master,可以全局设置:
# 设置默认分支名为 master(适用于以后 git init)
git config --global init.defaultBranch master
这样以后本地 git init 创建的仓库,默认分支就会是 master,而不是 main。
常见问题与报错处理
1. git push 报错:Updates were rejected because the tip of your current branch is behind
这说明:
- 你本地的
master历史,和远程master不在一条线上; - 可能远程有别人推送的新提交,而你本地还没有合并。
解决思路:
如果你非常确定远程那几条提交不要了,也可以强制推送(谨慎):# 1. 拉取并合并远程 master git pull --rebase origin master # 如果有冲突,解决后继续: # git add . # git rebase --continue # 2. 再推送 git push origin mastergit push origin master --force-with-lease
2. 删除远程 main 时报错:refusing to delete the current branch
这通常是因为 GitHub 上的默认分支仍然是 main,而不是 master。必须先在 GitHub 的 Settings → Branches 里把默认分支改成 master,再删除 main。
3. 本地已经有 master 分支怎么办?
如果本地已经有 master 分支,同时又有一个 main,你需要:
- 确认你想保留的是哪个分支;
- 先把多余的分支删掉,或者合并到目标分支;
- 再按上面步骤改名。
例如,把main合并到master:git checkout master git merge main # 然后再删除本地的 main git branch -d main
一套完整命令小结(可以直接照抄)
假设你当前在 main 分支,远程默认分支也是 main:
# 1. 切到 main
git checkout main
# 2. 本地重命名为 master
git branch -m main master
# 3. 推送新分支到远程
git push -u origin master
# 4. 在 GitHub 网页上把默认分支改为 master(Settings -> Branches -> Default branch)
# 5. 删除远程旧 main 分支
git push origin --delete main
# 6. 设置本地跟踪(如果之前没用 -u)
git branch -u origin/master master