Xcode 与 VS Code 对比
Apple 官方 IDE Xcode 与微软广受欢迎的编辑器 VS Code 在 iOS 开发领域正面交锋。哪款工具能让你的开发效率更高?
结构化分支策略——main、develop、feature、release、hotfix
单一主分支,频繁提交,通过feature flag实现安全部署
| 分类 | Git Flow | Trunk-Based Development |
|---|---|---|
| 性能 | 6/10 | 9/10 |
| 学习难易度 | 5/10 | 7/10 |
| 生态系统 | 8/10 | 9/10 |
| 社区 | 8/10 | 9/10 |
| 就业市场 | 8/10 | 9/10 |
| 面向未来 | 5/10 | 10/10 |
# Git Flow - 完整工作流示例
# 初始设置
git flow init -d
# 分支:main、develop、feature/、release/、hotfix/
# 开发新功能
git flow feature start user-profile-redesign
# → 创建了 feature/user-profile-redesign 分支
# 开发过程
git add src/views/ProfileView.swift
git commit -m "feat(profile): redesign user profile card"
git add src/viewmodels/ProfileViewModel.swift
git commit -m "feat(profile): add avatar lazy loading"
# 功能完成——合并到develop
git flow feature finish user-profile-redesign
# → feature分支被删除,已合并到develop
# 发布准备
git flow release start 2.4.0
# → 创建了 release/2.4.0 分支
# release分支上只做bug修复!
git commit -m "fix: avatar cache invalidation on logout"
git commit -m "chore: bump version to 2.4.0"
# 发布完成
git flow release finish 2.4.0
# → 合并到main,创建标签(v2.4.0),回合并到develop
# 发现生产环境问题
git flow hotfix start fix-crash-on-launch
git commit -m "fix: nil pointer in AppDelegate startup"
git flow hotfix finish fix-crash-on-launch
# → 合并到main和develop,打上v2.4.1标签# Trunk-Based Development - 日常工作流
# 每天早晨:从最新代码开始
git pull origin main
# 短生命周期feature分支(最多1-2天!)
git checkout -b feat/quick-login-improvement
# 小而原子化的提交
git add src/views/LoginView.swift
git commit -m "feat: add biometric login button"
git add tests/LoginTests.swift
git commit -m "test: biometric auth unit tests"
# 立即合并到trunk(即使未完成,也用feature flag隐藏!)
git checkout main
git pull origin main
git merge feat/quick-login-improvement
git push origin main
git branch -d feat/quick-login-improvement
# 用feature flag隐藏未完成的功能(Swift)
# FeatureFlags.swift
enum FeatureFlag: String {
case newLoginUI = "new_login_ui"
case profileV2 = "profile_v2"
case darkModeV3 = "dark_mode_v3"
}
class FeatureFlagService {
static func isEnabled(_ flag: FeatureFlag) -> Bool {
// 从远程配置或本地覆盖中读取
return RemoteConfig.shared.bool(forKey: flag.rawValue)
}
}
// 在View中使用
if FeatureFlagService.isEnabled(.newLoginUI) {
NewLoginView()
} else {
LegacyLoginView()
}
# CI/CD流水线(GitHub Actions)
# .github/workflows/ci.yml:
# on: push (branches: [main])
# → lint → test → build → deploy staging → smoke test → deploy production对于Web服务和SaaS产品而言,Trunk-Based Development是现代标准——与CI/CD完美契合,迭代速度快。对于iOS应用,轻量版的Git Flow(仅main + feature分支)较为实用:App Store审核流程和版本发布周期更适合这种结构。GitHub Flow(main + 短生命周期的feature分支)是一个不错的折中方案。
获取免费咨询GitHub Flow是简化版本:只有main和feature分支,没有release分支和develop分支。对中小型团队来说是理想的折中选择。