2. Git基础与分支策略:版本管理的基石

说实话,我见过太多团队在版本管理上栽跟头了。有的项目代码乱成一锅粥,有的上线前才发现合并冲突。这些问题,说白了都是Git没用好。今天我就把这些年积累的经验,跟大家好好聊聊。

2.1 Git核心概念:你得先搞懂这几个东西

仓库(Repository)

仓库就是你的代码家。我习惯把本地仓库比作「草稿本」,远程仓库比作「正式出版物」。你在本地随便改,改好了再推送到远程。

核心要点:

  • 本地仓库:你电脑上的.git目录
  • 远程仓库:GitHub/GitLab上的项目
  • 工作区:你正在编辑的文件
  • 暂存区:准备提交的临时区域

提交(Commit)

提交就是给代码拍张快照。我经常跟团队说:「每次提交都要像写日记一样,记录清楚你干了什么。」

# 好的提交信息示例
git commit -m "fix: 修复用户登录时token过期未刷新问题"

# 不好的提交信息
git commit -m "改了点东西"

我的习惯:每次提交前先git diff看看改了啥。曾经有一次我手滑把配置文件也提交了,结果线上环境崩了一下午。从那以后,我提交前必看diff。

分支(Branch)

分支就是平行宇宙。每个分支可以独立开发,互不干扰。我见过最夸张的团队,一个项目有50多个分支同时存在...嗯,那场面确实壮观。

标签(Tag)

标签是给历史版本贴个标签。我一般只在发布正式版本时打标签,比如v1.0.0、v2.3.1这样。

# 打标签
git tag -a v1.0.0 -m "正式发布1.0.0版本"

# 查看标签
git tag -l

2.2 分支模型对比:Git Flow vs Trunk Based

这两个模型我都在实际项目中用过。Git Flow适合大型项目,Trunk Based适合快速迭代。你想想看,选哪个取决于你的团队节奏。

Git Flow:经典但有点重

  • master分支:只放稳定版本
  • develop分支:日常开发主分支
  • feature分支:新功能开发
  • release分支:发布前准备
  • hotfix分支:紧急修复

我曾经踩过的坑:用Git Flow时,团队有5个人同时开发,结果合并冲突处理了整整两天。后来我学乖了,小团队用Trunk Based更合适。

Trunk Based:轻量高效

  • 只有一个主分支(trunk/main)
  • 开发直接提交到主分支
  • 通过特性开关控制功能上线
  • 适合持续集成/持续部署

我的建议:团队小于10人,用Trunk Based。大于10人,考虑Git Flow。但不管用哪个,分支数量别超过5个,否则管理成本太高。

2.3 团队协作中的版本管理规范

这部分是我最想强调的。规范不是束缚,而是保护。我见过太多因为不规范导致的事故了。

提交规范

类型 说明 示例
feat 新功能 feat: 添加用户注册功能
fix 修复bug fix: 修复空指针异常
docs 文档更新 docs: 更新API文档
refactor 重构 refactor: 优化数据库查询

分支命名规范

# 推荐格式
feature/功能名称-日期
bugfix/问题编号
hotfix/紧急修复描述

# 实际例子
feature/login-20240115
bugfix/ISSUE-1234
hotfix/critical-security-patch

避坑指南:我曾经见过有人用「feature/最终版」「feature/最终版2」「feature/绝对最终版」这种命名...嗯,后来那个项目重构了。分支命名一定要清晰,别偷懒。

代码审查流程

  1. 开发完成后创建Pull Request
  2. 至少2人审查通过才能合并
  3. 合并前必须通过CI/CD流水线
  4. 合并后删除源分支

2.4 知识体系总览

Git基础与分支策略知识体系 核心概念 仓库 · 提交 · 分支 · 标签 分支模型 Git Flow vs Trunk Based 团队规范 提交规范 · 分支命名 · 审查流程 实践应用:持续集成与版本发布 核心原则 1. 小步提交,频繁集成 2. 分支越少越好,合并越早越好 3. 规范是效率的保障,不是束缚

这张图基本概括了本章的核心内容。记住,Git只是工具,真正重要的是团队怎么用它。我见过用Git很烂但项目成功的团队,也见过Git用得飞起但项目一塌糊涂的。关键还是人,是规范,是流程。

最后说一句:版本管理没有银弹。Git Flow也好,Trunk Based也罢,适合你的才是最好的。我建议你先小范围试点,跑通了再推广。别一上来就搞大跃进,容易翻车。

专注资料整理