分支管理规范化
以前我们feature分支命名随心所欲,有的叫“new_func”,有的叫“bugfix_li”,时间一长根本分不清功能关联性。现在强制采用“feature/需求单号-功能简述”格式,比如“feature/ERP-283-user-auth”。关键改进在于设置了分支存活时限:超过两周的feature分支自动触发警报,防止出现沉积三年的僵尸分支。
主分支保护这块我们吃过亏。有次实习生直接把实验代码push到production,导致线上事故。现在master分支必须通过PR合并,且需要至少两个代码所有者审批。更重要的是配置了状态检查:单元测试覆盖率必须大于80%,Sonar扫描不能有阻塞级问题,安全扫描必须通过。
提交记录的清洁度
曾经我们的commit message充斥着“修复bug”、“稍微改改”这类天书。现在遵循Angular规范,要求格式为“type(scope): subject”,比如“feat(auth): 增加短信验证码登录”。特别要强调的是——禁止使用git push -f强制推送。上周有个同事强制推送覆盖了同事刚提交的代码,差点导致全天工作白干。
PR流程的精简
原来我们的PR动辄上千行代码,审查起来像看小说。现在硬性规定单次PR不超过400行,超出的必须拆分。PR描述模板里强制要求填写测试方案和回滚计划,这个改动让代码审查效率提升了40%。我们还引入了“潜水员”机制——随机抽选两位不参与该功能的开发参与审查,有效打破了技术壁垒。
钩子脚本的妙用
在.git/hooks里配置的pre-commit钩子现在会自动运行ESLint检查和单元测试,连console.log都没机会混进代码库。最实用的是我们自制的冲突预警脚本,在git push时会扫描目标分支的变更文件,提前标识出可能冲突的区域。
灾备方案不可或缺
有次GitLab宕机八小时,幸亏我们定期备份仓库元数据。现在每周自动备份所有分支的关联关系和权限配置到异地存储。另外建立了紧急通道:当PR流程阻塞时,可通过三位技术负责人联合授权进行紧急合并,事后必须补全流程。
实战技巧三则
使用git merge --squash保持分支图整洁,避免出现蜘蛛网式的合并线
配置git blame忽略大规模格式调整的提交,让溯源更准确
定期用git gc --aggressive压缩仓库,去年为我们节省了35%的存储空间
这套方案实施半年后,小张现在能淡定地每天处理十余次合并请求。最明显的变化是发版时间从原来的4小时缩短到40分钟,团队再也没人因为分支冲突加班。记住,好的工作流应该像空气一样存在——感觉不到,却不可或缺。
204

被折叠的 条评论
为什么被折叠?



