分支创建与切换
25 分钟
分支创建与切换
分支让你在同一份代码上并行尝试不同方案:修 bug 不影响正在写的新功能,功能做完再合并回主线。
学习目标
- 创建、切换、列出、删除分支
- 理解
main与功能分支的协作习惯 - 知道「快进合并」与「三方合并」的直观区别(细节在下一课)
为什么需要分支
在 CodeRoadMap 里同时做「admin 样式优化」和「platform 关于页」时,理想状态是:
main保持可部署feature/admin-style上改 adminfeature/about-page上改 platform
各分支独立 commit,互不影响,完成后再合并。
基本命令
# 查看分支,* 为当前分支
git branch
# 新建分支(不切换)
git branch feature/login-ui
# 新建并切换
git checkout -b feature/login-ui
# Git 2.23+ 等价:
git switch -c feature/login-ui
# 切换到已有分支
git switch main
# 删除已合并的分支
git branch -d feature/login-ui
# 强制删除未合并分支(慎用)
git branch -D feature/login-ui
在分支上开发
git switch main
git switch -c feature/readme
echo "新功能说明" >> README.md
git add README.md
git commit -m "feat: add feature section to readme"
git switch main
cat README.md # 没有「新功能说明」—— 改动只在 feature 分支
切回 feature/readme 又能看到改动。这就是分支:同一工作目录,不同历史线。
命名习惯
| 前缀 | 用途 | 示例 |
|---|---|---|
feature/ | 新功能 | feature/article-editor |
fix/ | 修复 | fix/cors-x-request-id |
docs/ | 文档 | docs/git-course |
chore/ | 工具/构建 | chore/upgrade-next |
本站开源协作时,分支名尽量短、可读、英文或拼音,避免空格。
查看分支关系
git log --oneline --graph --all
合并前你会看到 main 与 feature/* 从某 commit 分叉、各自向前。
常见错误
Q:切换分支时提示有未提交修改
→ 先 commit 或 stash(临时贮藏),再 switch。
git stash
git switch main
# 做完别的再切回来
git switch feature/readme
git stash pop
Q:在错误的分支上 commit 了
→ 未 push 时可用 git cherry-pick 把 commit 挪到正确分支(进阶),或记住:小步 commit、常看 。