分享

使用 Git 协作开发项目指南 | 技术学习小组

 饮茶仙人 2016-09-13

我们使用 Git 管理项目代码,如果你被邀请参与项目开发,请务必仔细阅读文章。

请根据自己参与项目查阅对应的 Git 文章,按文章一步步操作,了解使用规范和流程。

如果按照文中步骤操作出现问题,请直接联系 Tinker

我会根据你的问题,继续补充完善文章,谢谢 :)。

注册账号

如果你准备参阅项目开发,可阅读此步。参照 项目开发流程 说明的发布相应消息。

首先,你需要注册奇迹空间(北京)科技有限公司 GitLab 账号,具体操作流程见:

注册完成后,告知 Tinker 你的 Gitlab 账号,消息格式为:

  • 奇迹 Gitlab 账号:XXXXXXX,要做服务器开发 / Android 开发/ iOS 开发。

根据情况,我会给你以下项目权限

  • Demo Git 库
  • 将要参与的项目 Git 库

认真并仔细阅读 Git 教程,操作一遍所有的 Git 命令/操作,就能明白 Git 协作开发项目流程了。

安装 Git

请参考文章:安装 Git – 廖雪峰

将 Git 项目代码下载到本地

写项目的第一步是要把代码下载到本地并运行起来,操作流程见:

每个 Git 项目的根目录都会有一个 readme.md 文件,参照 readme.md 的内容,把项目运行起来。

我不满意 Android 的文章,感兴趣的朋友可以联系我,然后你来完善。

查看分支

Git 最重要的一个概念是分支,新手一定要了解分支。

从我学习 Git 的经历来看,看概念不如实际操作学的快、学的深。根据我文章描述的步骤一步步执行,应该可以明白什么是分支、怎么操作分支等内容。

如还不懂,就多 Google 看看别人写的文章吧。看到好的东西可以联系我补充完善咱们的 Git 文章。

按照上一步操作,我们已经把 Git 项目下载到本地,这时本地项目分支应该是 master 分支,查看自己所在分支操作流程见:

切换分支

在查看分支这一步,你应该了解到项目有 master、development 分支:

  1. master: 该分支主要是用于 Production 环境(服务器项目)或打正式包(Android 或 iOS 项目);
  2. development: 该分支主要用于 Development 环境(服务器项目)或打测试包(Android 或 iOS 项目)。

在本地开发项目,请一定要切换到 development 或 feature(下文中会描述什么是 feature 分支) 分支操作,切换分支的操作流程见:

新建功能分支

我们开发新功能,都是在 development 分支上衍生一条新的分支,即功能分支,也就是下文所说的 feature 分支。

所谓的 A 分支衍生 B 分支、基于 A 分支创建 B 分支,其实就是把 A 分支的代码完全复制一份,并将其命名为 B。

具体操作流程见:基于 Development 分支创建 Feature 分支

为什么要新建功能分支,而不是在 master 或 development 分支上直接提交代码呢?

主要目的有两个:

  1. 保证代码质量:feature 分支的代码要想进入 development 分支必须要提交 Merge Pull Request,只有通过审核的代码才能进入 development 分支,这样能提高项目代码质量。
  2. 保证线上环境稳定:进入 development 分支的代码,测试服务器首先会执行自动化测试,当自动化测试通过后再进行人功能测试,人工测试通过后,development 的代码才会合并到 master 分支,这样能大大减少线上环境的 BUG 数。

所以,项目的 master 和 development 分支是受保护的:

  1. 只有 Owner、Master(此 Master 非分支名称,是 Gitlab Member 的一个权限组名称)才可 commit + push 代码;
  2. Developer 只能基于 development 分支新建 feature 分支,然后在 feature 分支 commit + push 代码。

提交代码

为了保证代码不丢失,当你觉得完成一小部分功能后一定要及时提交代码。

提交代码请按照下述流程操作:

  1. show diff
    • show diff 这个操作是为了让你仔细检查代码。在六年开发经验中,有太多人因为粗心注释掉重要的代码,同时 reviewer 也粗心没注意到,从而导致了线上环境崩溃无法运转。
    • 在实际工作中,一旦从先这种错误,将对你产生极坏的影响,升职加薪必将与你无缘。严重的还会降薪,甚至辞退。
  2. commit
    • commit 操作是将变动提交到本地的 Git 库;
  3. push
    • push 操作是将本地未提交到远程 Git 代码库的 commit 提交到远程 Git 代码库里;

2、3步骤通过 IDE 是可以同时进行的,具体操作步骤见下述文章

具体操作流程见:

PHP + iOS 的文章还未写,感兴趣的朋友可以联系我,然后你来撰写文章。

feature 分支合并 development 分支

下文中提到的合并即 merge,A merge B 就是把 B 中『A 没有的代码』复制到 A,如果同一个代码文件不一样,Git 是会提示冲突,这时候你需要细心的解决冲突。

简单来说 A 跟 B 做比较:

  • A 比 B 少的代码会复制到 A 中;
  • 不一样的代码会提示冲突,A 跟 B 的代码都会存在同一个文件中。

了解完 merge 后,我们需要明白为什么 feature 分支需要 merge development 分支的代码。

一般一个项目是多人参与开发的,因为功能及开发时间点不一致,feature 分支合并到 development 的时间也不同,也就导致了众多的 feature 代码落后于最新的 development 代码。

比如说你新建 feature A 分支是基于 1 月 1 号的 development 分支代码,而 development 分支在 1 月 2 号 merge 一个 feature B 分支,这时候你的 feature A 是缺少 development 新 merge 的代码。

如果你没有将 development 分支新的代码 merge 到自己的 feature A 分支上,如果两个分支的代码存在冲突,Pull Request 页面会提示有冲突导致无法合并,如下图所示:

Pull Request 冲突

如看到这样的提示,接下来你就需要解决冲突。

请谨记,这个 merge 操作非常重要!

如不及时 merge,development 分支代码增多,development 分支与你的 feature 分支不同的代码会越来越多,也就是让冲突越来越多,等最后合并时,你会发现解决冲突的时间远超于你开发时间了。

所以,如果看到了 development 分支代码有更新,一定要及时将最新的 development 代码 merge 到自己的 feature 上。

该步骤的具体操作流程见:

提交 Pull Requet

当你确保自己的代码已经合并了 development 分支最新代码后并且没有冲突,你需要提交 feature 分支合并到 development 分支的 Pull Requst。

请注意这里的描述:

  • feature 分支合并 development 分支:是将 development 分支代码复制到 feature 分支;
  • feature 分支合并到 development 分支:是将 feature 代码复制到 development 分支。

具体操作流程见:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多