一、核心概念
- 本地分支:是你本地仓库中独立的开发线,用于隔离不同的功能开发或实验。
- HEAD:指向当前所在分支的最新提交。
- 工作区、暂存区、本地仓库:修改文件 →
git add加入暂存区 →git commit提交到本地仓库(当前分支)。 - 分支本质上是一个指向提交对象的可变指针,创建和切换都非常轻量。
二、常用操作命令
| 操作 | 命令 |
|---|---|
| 查看本地分支列表 | git branch(当前分支前有 * 标记) |
| 查看所有分支(含远程) | git branch -a |
| 创建新分支(停留在当前分支) | git branch <分支名> |
| 创建并切换到新分支 | git checkout -b <分支名> 或 git switch -c <分支名> |
| 切换分支 | git checkout <分支名> 或 git switch <分支名> |
| 删除本地分支(已合并) | git branch -d <分支名> |
| 强制删除本地分支(未合并) | git branch -D <分支名> |
| 重命名当前分支 | git branch -m <新分支名> |
| 查看分支与远程的追踪关系 | git branch -vv |
| 查看分支合并图 | git log --oneline --graph --all |
三、分支工作流示例
# 1. 基于 main 分支创建 feature 分支
git checkout main
git pull # 更新本地 main
git checkout -b feature/new-login
# 2. 在 feature 分支上开发、提交
git add .
git commit -m "add login page"
# 3. 切回 main 合并 feature
git checkout main
git merge feature/new-login
# 4. 删除已合并的 feature 分支
git branch -d feature/new-login
创建发版分支
# 1. 同步远程最新状态(防止基于过期的 master 信息做判断)
git fetch origin
# 2. 落后自检:列出 origin/master 有而当前 HEAD 没有的提交
# 无输出 = 当前 HEAD 已包含 master 全部提交,流水线落后检测必过
git log --oneline HEAD..origin/master
# 3. 从当前位置创建并切换到新分支
# 当时停在 feature 分支(7947c72 = master + M10),
# 所以新分支起点天然满足"不落后 master"
git checkout -b release-20261013
# 4. 推送新分支到远程(普通推送,新分支无冲突)
git push origin release-20261013
# 5. 验证(输出截断后补充的确认)
git branch --show-current # 确认当前已在 release-20261013
git ls-remote origin release-20261013 # 确认远程分支存在且指向 7947c72
四、注意事项
- 切换分支前确保工作区干净(
git status显示无未提交修改),否则切换可能被拒绝或携带未提交的修改。 - 如果当前分支有未提交的修改且想强制切换,可使用
git stash暂存,切回后再git stash pop恢复。 - 删除分支时,
-d会检查是否已合并,若未合并需用-D(谨慎操作,丢失提交无法恢复)。 - 本地分支与远程分支是独立的,本地删除不影响远程分支,推送到远程需用
git push origin <分支名>。
五、常见场景速查
- 误删未合并分支:用
git reflog找回提交 hash,然后git checkout -b <分支名> <hash>重建。 - 撤销本地分支的修改:
git reset --hard HEAD~1(回退一个提交,慎用)。 - 将当前分支设置为追踪某个远程分支:
git branch -u origin/<远程分支名>
