选择适合团队规模和项目复杂度的分支策略,确保团队有统一的协作规则。
分支结构:
main
:稳定版本,用于发布develop
:集成所有功能feature/xxx
:开发新功能release/1.0
:准备版本发布hotfix/xxx
:紧急修复生产环境问题工作流程:
develop
分支拉取 feature/xxx
分支开发develop
develop
创建 release/1.0
分支,测试后合并到 main
和 develop
main
创建 hotfix/xxx
分支,修复后合并到 main
和 develop
分支结构:
main
:始终保持可部署状态feature/xxx
:开发新功能工作流程:
main
拉取功能分支main
分支结构:
production
:生产环境staging
:预发布环境feature/xxx
:开发新功能工作流程:
Fix #123: 优化登录逻辑
),方便追踪main
或 develop
)Squash and Merge
(压缩提交)或 Merge Commit
(保留历史),视团队偏好而定提交信息格式化:使用 Conventional Commits 规范:
# 提交信息格式
<type>(<scope>): <简短描述>
类型(type):
feat
:新功能fix
:修复docs
:文档chore
:日常事务style
, refactor
, test
, perf
等示例:
feat(auth): 添加 JWT 登录验证 fix(payment): 修复支付失败时的错误提示
git tag
标记正式版本:
git tag v1.0.0 git push origin v1.0.0
主版本.次版本.修订号
(如 v1.0.0
)原因:多人同时修改同一文件的同一部分
解决方案:
git pull origin develop
合并最新代码git rebase develop
保持提交历史线性:
git checkout feature/xxx git pull --rebase origin develop
解决方案:
git rebase -i HEAD~5 # 修改最近 5 次提交
选择 squash
(合并提交)或 edit
(修改提交内容)
git push --force-with-lease
解决方案:
feature/用户名_任务名
(feature/alex_login
)in-progress
, blocked
)类别 | 工具 | 用途 |
---|---|---|
CI/CD | GitHub Actions, GitLab CI, Jenkins | 自动化测试和部署 |
代码质量 | ESLint, SonarQube | 确保代码规范 |
可视化 | GitKraken, SourceTree | 直观查看分支和提交历史 |
文档协作 | Confluence, Notion | 记录项目规范和设计文档 |
git checkout -b feature/user-profile
git add . git commit -m "feat(profile): 添加用户资料页面"
git fetch origin git rebase origin/develop
git push origin feature/user-profile
develop
git tag v1.1.0 git push origin v1.1.0
在动手之前,明确项目的目标和范围:
需求分析:
任务分解:
优先级排序:
文档是项目的基础,帮助团队统一认知:
文档类型 | 内容说明 | 工具示例 |
---|---|---|
项目文档 |
|
Markdown, Draw.io |
API 文档 | 如果涉及接口,使用 Swagger/OpenAPI 格式编写 | Swagger UI |
开发规范 |
|
EditorConfig |
部署流程 | 描述如何构建、测试和部署项目 | Docker, CI/CD 文档 |
在规划和文档完成后,初始化 Git 仓库:
本地初始化:
# 创建项目目录并进入 mkdir my-project && cd my-project # 初始化 Git 仓库 git init
关联远程仓库:
https://github.com/username/my-project.git
)关联本地仓库:
git remote add origin https://github.com/username/my-project.git
提交初始文档:
# 添加 README 和文档文件到暂存区 git add README.md docs/ # 提交初始版本 git commit -m "docs: 初始化项目文档" # 推送到远程仓库 git push -u origin main
根据技术栈创建基础文件结构:
代码目录示例(Python 项目):
my-project/ ├── docs/ # 文档 ├── src/ # 源代码 │ ├── main.py # 入口文件 │ └── utils/ # 工具模块 ├── tests/ # 测试代码 ├── requirements.txt # 依赖文件 └── README.md # 项目说明
基础配置文件:
.gitignore
:排除不需要版本控制的文件(如 __pycache__/
, .env
)LICENSE
:选择开源许可证(如 MIT、Apache 2.0).editorconfig
:统一代码格式(如缩进、换行符)创建功能分支:
# 从 main 分支拉取最新代码 git checkout main git pull origin main # 创建功能分支 git checkout -b feature/user-login
开发与提交:
# 开发完成后提交代码 git add . git commit -m "feat(auth): 实现用户登录功能" # 推送分支到远程 git push -u origin feature/user-login
代码审查与合并:
main
分支后删除功能分支:
git branch -d feature/user-login
事项 | 说明 |
---|---|
文档与代码同步 | 每次功能开发后更新文档(如 API 变化、新模块说明) |
分支管理 | 遵循分支命名规则(如 feature/xxx , bugfix/xxx ) |
版本控制 | 定期提交代码并推送到远程仓库,防止数据丢失 |
自动化测试 | 配置 CI/CD 工具(如 GitHub Actions)自动运行测试 |
规划任务:
编写文档:
README.md
, docs/architecture.md
, .gitignore
初始化仓库:
mkdir blog && cd blog git init git remote add origin https://github.com/username/blog.git git add . && git commit -m "docs: 初始化项目" git push -u origin main
开发功能:
git checkout -b feature/user-registration # 开发用户注册功能... git add . && git commit -m "feat(auth): 添加用户注册接口" git push -u origin feature/user-registration # 发起 PR 并合并到 main