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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

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