iOS 开发之代码版本控制:Git
2017-02-11 本文已影响0人
请叫我安安小盆友
Git 是什么
Git 是一种分布式版本控制系统。每个团队成员在本地都有一份整个代码仓库的镜像。
为什么用 Git
- 节省时间:Git 命令运行快速
- 离线工作:即使没有网络或是远程服务器宕机,也可以在本地进行几乎所有的操作
- 撤销错误操作:改正上一个提交,撤销一个完整的提交...
- 可靠性高:每个成员都有一个镜像,意味着丢失数据货仓库损坏的概率很低
- 更高的自由度:强大的分支功能,打造合适的工作流
- 顺应潮流:看看有多少知名的开源项目使用 Git 就知道了
Git 基本工作流程
- 更改本地仓库中的某个文件
- 使用
git add
命令将改动照添加到暂存区 - 使用
git commit
命令提交改动 - 使用
git push
命令将改动提交到远端仓库
更多的操作参考:
工具和服务
- 桌面应用程序
- Tower
- SourceTree(免费,推荐)
- 比较工具
- Xcode 自带了简单的比较工具
- Kaleidoscope
- 代码托管服务
工作流
基于 Git 强大的分支特性,可以灵活的打造工作流。比如 Atlassian Git Tutorial 的 Comparing Workflows 章节中提到的以下四种:
- Centralized Workflow
- Feature Branch Workflow
- Gitflow Workflow
- Forking Workflow
每一种工作流都有对应适合的使用场景。每个团队商定一个统一的工作流是至关重要的,可以自己定义一个完全适合自己项目的工作流,或者使用一个别人定义好的。在我以往所待过的团队中都默认使用了一个当前流行的工作流 git-flow。
实际开发过程中流程可能如下:
- 初始化得到预设的 master 和 develop 分支
- 从 develop 分支开 feature 分支开发新功能,完成后合并到 develop 分支
- 功能点都开发完并经过测试后,从 develop 分支上开 release 分支,主要用来做最后的检查。等准备好上架后,再合并到 master 和 develop,并打上 tag
- 从 master 分支上打包提交到 App Store
- 如果发现 master 上的版本有 bug,从 master 开 hotfix 分支,修复后再合并到 master 和 develop
SourceTree 也已对这种工作流提供了支持。
最佳实践
- 正确使用 .gitignore 文件,避免提交不必要的文件到代码仓库,可参考这里。
- 提交前充分测试自己的改动,这当然是最基本的。
- 每次提交粒度要小,比如一个提交只修复一个问题,或完成一个小功能。对于非常复杂的新功能,应该将其分割成多个有意义的逻辑模块来进行提交。精简的提交可以让其他的开发团队人员更简单地明白其改动的用义。
- 频繁地提交改动,便于其他成员共享你的改动,减少整合代码时的冲突。
- 提交信息(commit message)规范化,加快 code review 进度,便于编写 release note,便于以后快速回忆起每个提交的变化。另可参考这里。
- 第一行作为标题,用少于 50 个字符来简短说明。
- 在一个空白分割行后要对改动做一个详细的描述,比如为什么要进行这次修改,具体改动了什么。
- 一定要使用现在时祈使句,动词要用比如 fix,add,change,而不是 fixed,added,changed。
- 灵活使用分支功能,比如添加新功能,修复错误,尝试新的想法等等都可以新开一个分支进行。
- 遵循一个工作流程,可根据项目开发的类型,部署模式和团队成员的个人习惯等,商定一个工作流并一直遵循它。