单一主干原则
主分支(main/master
)始终保持可发布状态,禁止直接提交代码,所有新功能开发需通过特性分支实现,确保主干稳定性。
分支生命周期管理
feature/*
):基于主分支创建,命名包含Jira编号/需求描述(例:feature/DEV-123
)hotfix/*
):处理线上紧急BUG,合并后需同步到所有开发分支release/*
):用于预发布测试,禁止新增功能原子化提交
每个提交需满足:
graph TD A[主分支] --> B(创建特性分支) B --> C{开发过程} C --> D[每日rebase主分支] C --> E[本地单元测试] C --> F[代码风格检查] D --> G(发起Pull Request) G --> H[代码审查] H --> I[自动化CI/CD] I --> J[合并到主分支]
审查要点
审查流程
git push -f
更新分支时需重新发起审查Git Hooks配置
预提交阶段自动执行:
# pre-commit示例 npm run lint npm test
CI/CD流水线
# .gitlab-ci.yml 示例 stages: - test - build - deploy unit_test: image: node:18 script: - npm install - npm run test:cov sonarqube_check: extends: .test script: - sonar-scanner -Dsonar.projectVersion=${CI_COMMIT_SHA}
冲突解决方案
git rebase
代替git merge
保持提交线性版本回滚策略
v1.2.3
)git revert
保留完整历史记录角色 | 权限范围 | 操作限制 |
---|---|---|
新人开发者 | 特性分支提交 | 禁止合并到主分支 |
核心开发者 | 分支合并/标签发布 | 需双人复核 |
技术负责人 | 生产环境部署 | 使用保护分支机制 |
引用说明
[1] Git官方文档 https://git-scm.com/doc
[2] Google工程实践指南 https://google.github.io/eng-practices/
[3] GitHub Flow工作流 https://guides.github.com/introduction/flow/
[4] 持续交付原则 https://continuousdelivery.com/