Swift开发者的Git工作流:如何保持理智且不破坏生产环境
老实说:你在公共分支上看到过多少次提交信息是“fix”或“修改”?又有多少次合并冲突浪费了你一小时,因为有人在提交前忘了拉取最新代码?如果你是一名在团队中工作的Swift开发者——无论是业余项目还是像“Tinkoff”或“Yandex.Maps”这样的大型应用——迟早你会遇到Git混乱的局面。
好消息是:正确的Swift开发者的Git工作流能将仓库从战场转变为井然有序的系统。在本文中,我们将分析哪些方法对iOS和macOS项目真正有效,如何无痛地设置code review,以及为什么CI/CD应该从第一天起就融入你的流程。
开始吧!
1. 为什么标准Git工作流在Swift下经常失效
Swift项目有其特殊性:Xcode项目、故事板(或SwiftUI)、Podfile / SPM依赖项,以及二进制资源(图片、字体)。如果在普通Web项目中合并冲突只需30秒解决,那么在iOS中可能因为.xcodeproj或.xcworkspace而花费半小时。
一个良好的Swift开发者的Git工作流能解决的主要问题:
- .xcodeproj中的冲突——当两名开发者同时添加文件时;
- 混乱的提交历史——如“WIP”、“修改”、“再修改”;
- 缺乏code review——导致bug进入main分支并破坏构建;
- CI崩溃——测试失败,但直到发布前无人察觉。
2. Git Flow vs GitHub Flow:Swift项目该选哪个?
经典的Git Flow(develop、release、hotfix、feature分支)是一种强大但笨重的方法。它非常适合具有明确发布周期的大型项目,例如当你为银行开发应用,版本为1.0、1.1、2.0且有严格的QA流程时。
另一方面,GitHub Flow(所有更改通过feature分支和Pull Request合并到main)是一种轻量级方案,适用于每天部署的初创公司和团队。对于Swift项目,它也能工作,但有一些注意事项:如果你有故事板或XIB,合并到main必须尽可能干净。
何时在Swift中使用Git Flow
- 发布周期较长的大型企业项目(例如银行、远程医疗);
- 多个并行版本(v1.0维护中,v2.0开发中);
- 对main分支稳定性有严格要求。
何时在Swift中使用GitHub Flow
- 部署快速的初创公司和中等规模项目;
- 团队人数不超过10人;
- 使用SwiftUI的项目(引用冲突较少)。
我个人推荐混合方案:带有简化develop分支的Git Flow——这是中等复杂度Swift项目的理想平衡。
3. 设置feature分支:能拯救你神经的规则
每个新功能都应该是从develop(或main,如果你使用GitHub Flow)分出的独立分支。以下是我在项目中使用的简单模板:
git checkout developgit pull --rebase origin developgit checkout -b feature/SPT-123-login-screen重要提示:在创建分支前始终执行rebase,以避免携带旧提交。别忘了使用前缀:feature/、bugfix/、hotfix/、release/。这能简化历史记录中的搜索。
多久与develop同步一次
每天或每次提交前执行rebase。这能最小化冲突。命令如下:
git checkout feature/SPT-123-login-screengit rebase develop如果冲突不可避免(例如由于.xcodeproj),使用git mergetool
博客
书籍推荐
推荐阅读