一、核心概念
- 本地分支:是你本地仓库中独立的开发线,用于隔离不同的功能开发或实验。
- 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 |
三、分支工作流示例
git checkout main
git pull
git checkout -b feature/new-login
git add .
git commit -m "add login page"
git checkout main
git merge feature/new-login
git branch -d feature/new-login
四、注意事项
- 切换分支前确保工作区干净(
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/<远程分支名>