Git 分支管理简明指南

为什么要“创建分支”

  • 隔离改动:避免污染 main,随时可以丢弃或回滚,风险更小。

  • 便于评审:一个分支对应一个清晰主题,Pull Request(PR)更聚焦。

  • 配合 CI / 保护策略:主干保持稳定,分支先自测、跑 CI 通过后再合并。

  • 降低冲突:多人并行开发互不干扰,必要时再同步主干。

  • 可追溯性:PR 历史就是“变更文档”,原因与效果一目了然。


什么时候要“创建分支”

  • 新功能开发、Bug 修复、代码重构。

  • 配置或 CI/CD 流程变更。

  • 实验性改动。

  • 需要多人协作或分阶段提交的任务。


如何“创建分支”

  1. 新建并切换

    git switch -c feature/<module>-<desc>
    
  2. 提交并推送

    git add -A
    git commit -m "feat(...): 描述本次改动"
    git push -u origin HEAD
    
  3. 发起 PR

    • 在 GitHub “Compare & Pull Request”。

    • 等待 CI 和 CODEOWNERS 通过后再合并。


为什么“合并后删除分支”

  • 生命周期结束:改动已进入 main,旧分支继续提交会带来混乱。

  • 保持整洁:避免陈旧分支堆积、误推触发无意义 CI。

  • 可恢复:GitHub PR 页可一键 Restore,历史不会丢失。


什么时候“不删分支”

  • 长期存在的分支:release/*hotfix/*

  • 确实计划在同一主题上继续迭代(但建议新开分支)。


如何“删除分支”(安全做法)

  1. 远端:PR 合并页点击 Delete branch

  2. 本地

    git checkout main && git pull
    git branch -d <branch>
    git fetch -p   # 可选,清理远端引用
    
  3. 恢复需要

    • PR 页面点 Restore branch,或

    • main 新建一个同名 / 新名分支。


常用命名与流程建议

  • 命名规则

    • feature/ 新功能

    • fix/ Bug 修复

    • chore/ 杂项维护

    • ci/ CI/CD 相关

    • docs/ 文档更新

    • refactor/ 重构

  • 合并方式

    • 推荐 Squash & merge → 主干历史简洁。

    • 需要保留提交记录时用 Rebase & merge


遇到“切分支被拒(有未提交改动)”

  • 保留改动直接建分支

    git switch -c chore/<desc>
    git add -A && git commit -m "..."
    
  • 临时存起

    git stash push -u -m "wip"
    git checkout main
    
  • 丢弃改动

    git restore --source=HEAD <files>
    git reset --hard