分支管理
2026/1/16大约 2 分钟
分支管理
分支操作
# 查看分支
git branch # 本地分支
git branch -r # 远程分支
git branch -a # 所有分支
git branch -v # 显示最后提交
# 创建分支
git branch <branch>
git checkout -b <branch> # 创建并切换
git switch -c <branch> # Git 2.23+
# 切换分支
git checkout <branch>
git switch <branch> # Git 2.23+
# 删除分支
git branch -d <branch> # 已合并的分支
git branch -D <branch> # 强制删除
git push origin --delete <branch> # 删除远程分支
# 重命名分支
git branch -m <old> <new>合并分支
merge
# 合并分支
git merge <branch>
# 合并策略
git merge --no-ff <branch> # 禁用快进合并,保留分支历史
git merge --squash <branch> # 压缩为一个提交# Fast-forward(默认)
A---B---C main
\
D---E feature
合并后:
A---B---C---D---E main
# --no-ff
A---B---C---------F main
\ /
D---E featurerebase
# 变基
git rebase <branch>
# 交互式变基
git rebase -i HEAD~3 # 修改最近3次提交
# pick:保留
# reword:修改提交信息
# squash:合并到上一个提交
# drop:删除提交# rebase 前
A---B---C main
\
D---E feature
# rebase 后
A---B---C main
\
D'---E' featuremerge vs rebase
| 特性 | merge | rebase |
|---|---|---|
| 历史 | 保留分支历史 | 线性历史 |
| 冲突 | 一次解决 | 可能多次解决 |
| 适用 | 公共分支 | 个人分支 |
解决冲突
# 冲突标记
<<<<<<< HEAD
当前分支的内容
=======
合并分支的内容
>>>>>>> feature
# 解决步骤
1. 编辑冲突文件,保留需要的内容
2. git add <file>
3. git commit # merge 时
git rebase --continue # rebase 时
# 放弃合并
git merge --abort
git rebase --abortCherry-pick
# 挑选某个提交到当前分支
git cherry-pick <commit>
# 挑选多个提交
git cherry-pick <commit1> <commit2>
# 挑选范围
git cherry-pick <commit1>..<commit2>
# 不自动提交
git cherry-pick -n <commit>分支策略
Git Flow
main ─────●─────────────●─────────────●─────
│ │ │
hotfix ─────┼─────●───────┼─────────────┼─────
│ │ │ │
release ─────┼─────┼───●───┼─────────────┼─────
│ │ │ │ │
develop ─────●─────●───●───●─────●───────●─────
│ │ │ │
feature ─────┴─────────────┴─────┴───────┴─────- main:生产环境代码
- develop:开发主分支
- feature:功能分支
- release:发布分支
- hotfix:紧急修复分支
GitHub Flow
main ─────●─────●─────●─────●─────
│ │ │ │
feature ─────┴─────┴─────┴─────┴─────- 只有 main 分支
- 功能分支从 main 创建
- 通过 PR 合并到 main
- 合并后立即部署
分支命名规范
# 功能分支
feature/user-login
feature/order-create
# 修复分支
bugfix/login-error
hotfix/payment-crash
# 发布分支
release/v1.0.0