iOS 开发之代码版本控制:Git

Git 是什么

Git 是一种分布式版本控制系统。每个团队成员在本地都有一份整个代码仓库的镜像。

为什么用 Git

  • 节省时间:Git 命令运行快速
  • 离线工作:即使没有网络或是远程服务器宕机,也可以在本地进行几乎所有的操作
  • 撤销错误操作:改正上一个提交,撤销一个完整的提交...
  • 可靠性高:每个成员都有一个镜像,意味着丢失数据货仓库损坏的概率很低
  • 更高的自由度:强大的分支功能,打造合适的工作流
  • 顺应潮流:看看有多少知名的开源项目使用 Git 就知道了

Git 基本工作流程

  1. 更改本地仓库中的某个文件
  2. 使用 git add 命令将改动照添加到暂存区
  3. 使用 git commit 命令提交改动
  4. 使用 git push 命令将改动提交到远端仓库

更多的操作参考:

工具和服务

工作流

基于 Git 强大的分支特性,可以灵活的打造工作流。比如 Atlassian Git TutorialComparing 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。
  • 灵活使用分支功能,比如添加新功能,修复错误,尝试新的想法等等都可以新开一个分支进行。
  • 遵循一个工作流程,可根据项目开发的类型,部署模式和团队成员的个人习惯等,商定一个工作流并一直遵循它。

拓展

  1. Become a git guru.
  2. Learn Version Control with Git
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 多种多样的工作流使得在项目中实施Git时变得难以选择。这份教程提供了一个出发点,调查企业团队最常见的Git工作流。...
    JSErik阅读 4,477评论 2 8
  • 今天不用接你下班 我慢腾腾的转地铁 慢腾腾的走回家
    速效救脑丸阅读 118评论 0 0
  • 鸟随鸾凤飞腾远,人伴贤良品自高。小时候,曾经是语文老师的奶奶教我背孔子和老子,我一直是有口无心,于是她让我去参加庙...
    6897e1c6fd79阅读 160评论 0 0
  • 从申请交易离队起,欧文就走上一条不归路。这条路是荆棘,是坎坷,还是坦途,欧文也不清楚。他放弃了联盟很多人羡慕的机会...
    篮球白痴阅读 377评论 0 0