跳到主要内容

分支管理

本章将介绍 Git 的分支操作,包括创建、切换、合并分支等。

什么是分支?

分支是 Git 的核心功能之一,它允许你在不影响主线代码的情况下进行开发。

每个分支都是独立的开发线,可以:

  • 并行开发多个功能
  • 隔离实验性代码
  • 修复 bug 时不影响其他功能

查看分支

# 查看本地分支
git branch

# 查看所有分支(本地+远程)
git branch -a

# 查看远程分支
git branch -r

# 查看分支详细信息
git branch -v

# 查看已合并到当前分支的分支
git branch --merged

# 查看未合并到当前分支的分支
git branch --no-merged

创建分支

# 创建新分支(不切换)
git branch feature-login

# 创建并切换到新分支
git checkout -b feature-login

# Git 新版本的简写
git switch -c feature-login

切换分支

# 切换到已有分支
git checkout feature-login

# 切换到上一个分支
git checkout -

# Git 新版本的简写
git switch main

# 切换并丢弃本地修改
git checkout -f main

注意:切换分支前要确保工作区是干净的,或者储藏当前的修改。

重命名分支

# 重命名当前分支
git branch -m new-name

# 重命名指定分支
git branch -m old-name new-name

删除分支

# 删除已合并的本地分支
git branch -d feature-login

# 强制删除本地分支(即使未合并)
git branch -D feature-login

# 删除远程分支
git push origin --delete feature-login

合并分支

基本合并

# 确保在目标分支上(如 main)
git checkout main

# 合并功能分支
git merge feature-login

合并时如果出现冲突,需要手动解决冲突后提交。

合并策略

# 使用 fast-forward 合并(不创建合并提交)
git merge --ff feature-login

# 禁止 fast-forward,始终创建合并提交
git merge --no-ff feature-login

# 使用 rebase 合并
git rebase main

解决合并冲突

当两个分支修改了同一个文件的同一部分时,会出现冲突。

  1. 查看冲突文件:

    git status
  2. 打开冲突文件,会看到类似:

    <<<<<<< HEAD
    当前分支的内容
    =======
    要合并的分支的内容
    >>>>>>> feature-login
  3. 手动编辑文件,选择保留的内容

  4. 标记冲突已解决:

    git add filename.txt
  5. 完成合并提交:

    git commit

取消合并

# 取消合并
git merge --abort

变基(Rebase)

变基是将一系列提交"移动"到另一个基点上。

基本变基

# 将 feature 分支变基到 main
git checkout feature
git rebase main

交互式变基

# 修改最近 3 次提交
git rebase -i HEAD~3

交互式变基可以:

  • 修改提交信息
  • 合并多个提交
  • 拆分提交
  • 删除提交

使用场景

变基适合:

  • 保持提交历史整洁
  • 将功能分支的最新代码合并到主线

合并适合:

  • 保留完整的分支历史
  • 需要清晰的合并记录

比较分支

# 比较两个分支的差异
git diff main..feature-login

# 比较两个分支的提交
git log main..feature-login

# 查看分支独有的文件
git branch --merged main

分支命名规范

常用的分支命名:

# 功能分支
feature/user-login
feature/add-payment

# 修复分支
bugfix/fix-login-error
fix/header-alignment

# 发布分支
release/1.0.0

# 热修复分支
hotfix/security-patch

工作流示例

功能分支工作流

# 1. 从 main 创建功能分支
git checkout -b feature/new-feature

# 2. 开发功能并提交
git add .
git commit -m "添加新功能"

# 3. 同步 main 的最新代码
git fetch origin
git rebase origin/main

# 4. 开发完成后,合并到 main
git checkout main
git merge --no-ff feature/new-feature

# 5. 删除功能分支
git branch -d feature/new-feature

小结

本章我们学习了:

  1. 分支的概念和作用
  2. 查看、创建、切换分支
  3. 重命名和删除分支
  4. 合并分支和解决冲突
  5. 变基操作
  6. 分支比较
  7. 常用工作流

练习

  1. 创建两个功能分支并切换
  2. 在不同分支上提交修改
  3. 尝试合并分支并解决冲突
  4. 使用变基整理提交历史
  5. 清理不需要的分支