😀 前言:
因为没有从头组织过需要多人协作的小型项目,在公司内往往都是由架构的同学进行牵头,故一直对这一块也仅是一知半解,最近和朋友聊天说到这个问题,然后系统性的去了解了一下,发现了很多自己之前并不了解的流程和操作,本文是对此内容的一个归纳性总结本文的内容:比较详细的介绍了需要多人协作的小型项目在GitHub上该如何展开,以及如何科学合理的对项目进行管理
希望对想要了解这个方面内容的同学有所帮助
🧱 一、项目准备阶段
1. 明确仓库结构与职责
- 仓库目录结构规范,添加
README.md,让所有人对仓库内容有比较清晰的理解 - 定义模块负责人,避免后续协作中出现不必要的修改冲突等导致的合并冲突
- 可选(如果不是大项目+长周期也没必要)
- 创建
CONTRIBUTING.md文件,告知所有协作者,本仓库该遵循的一些规则 - 使用
CODEOWNERS配置自动分配 PR 审查人,如果每个模块有各自的负责人,就可以通过这个方式让其控制对模块的审核
- 创建
2. 设置保护机制
设置详情参考:Github添加分支保护,目的是保证仓库不会因为一些误操作而被破坏,所有人都遵循规则,合作能更加有序
🌱 二、日常开发流程
详细的flow流程可以阅读:Git flow,Github flow,Gitlab flow,我在这篇文章里详细对比了主流的三种flow的异同
推荐:GitHub Flow
推荐理由:对于小团队而言,基于 gitlab 的 gitlab flow过于臃肿,而git flow流程又与现代开发节奏背离,所以最简单的 github flow 反而是最适合小团队间的使用
下面的示例是在github flow基础上又加入了一些分支的命名规则,可以方便看的更清楚一些
main(稳定分支)
├── feature/<xxx>(开发分支)# 也可以用自己的昵称作为前缀来进行区分,例如 wind/<xxx>
├── fix/<xxx>(修复分支)
└── release/<vX.Y.Z>(可选,用于准备发版)
GitHub Flow流程简述
-
从
main拉取最新代码 -
创建并切换至新分支开发:
git checkout -b feature/xxx -
开发完成后推送:
git push origin feature/xxx -
在 GitHub 发起 Pull Request(PR),描述清楚变更点。
-
通过代码审查和自动测试后合并至
main -
删除本地和远程分支(可以配置合入通过后,自动删除远程的分支)
🧹 三、协作与规范
1. 编码规范
不同的编程语言需要不同的lint,format工具,这个部分三言两语说不完,待完善…
- 强制格式化工具(如 Prettier、Black、clang-format)+ Linter
- 建议 CI 中集成格式检查和静态检查。
2. Commit && PR 规范
多人协作开发,统一的commit标准是非常必要的,所有人采用同一种commit和PR的描述标注,杜绝模糊不清的表达,能让项目变得清晰可控
具体的详情可以参考:Git Commit 规范
📦 四、版本管理与发布
- 使用
release/<version>分支准备发布,PR 合并后打 tag:
git tag v1.2.3 -m "Release v1.2.3"
git push origin v1.2.3
- 自动生成变更日志(如使用standard-version)
- 可集成 CI/CD 发布流程(如 GitHub Actions + Docker + Vercel)
🧰 五、工具推荐
| 工具 | 功能 |
|---|---|
| GitHub Projects | 看板式任务管理(类似 Trello) |
| GitHub Actions | 自动构建、测试、部署 |
| Dependabot | 自动检查依赖更新与漏洞 |
| ReviewDog | 在 PR 中注释 Lint 问题 |
| semantic-release | 自动生成版本与 changelog |
✅ 示例工作流程(快速版)
git pull origin maingit checkout -b feature/login-page- 开发代码,提测自测通过
git commit -m "feat: 添加登录页面"git push origin feature/login-page- 在 GitHub 发 PR
- 指定 Reviewer 进行代码审查
- 审核通过 → squash merge (自动删除远程已合入分支)
- 删除自己本地分支