Skip to content

Git 开发流程

🏷️ Git

公司上个月最终决定把项目管理工具全部从 SVN 换到 Git,随之而来的是由于部分人员不会使用导致的代码提交及管理的混乱。

于是基于公司目前的开发、测试、发布流程,我起草一份 Git 的开发流程手册。经几番讨论及修改后,最终制订了如下流程。分享出来供大家参考。

Git 开发流程

  1. 创建发布用分支和测试用分支,创建开发创建分支用的基准标签(Tag)。(开发组长)

    • 发布用分支名:{发布编号}_RELEASE
      注意:发布用分支必须设置为受保护分支,仅主程序员允许合并,且无人(no one)可以推送。
    • 测试用分支名:{发布编号}_TEST
    • 基准标签名:T_{发布编号}_BASE

  2. 开发基于上面的基准标签,以任务管理中的工作项编号为单位创建开发用分支。(开发)

    • 开发用分支名:{发布编号}_{工作项编号}

  3. 开发在各任务对应的分支上完成任务后提交并推送。(开发)

  4. 开发将该任务合并到测试用分支后,创建测试用标签并发布到线下测试环境。(推荐在 SourceTree 上操作)(开发)

    • 测试用标签名:T_{分支名}_{番号}

  5. 测试通过后,测试将该任务的分支合并到发布用分支(推荐在 GitLab 上操作)。(测试)

    • 若合并时出现冲突,找该任务的开发协助。

      开发到测试的机器上执行本地合并。
      合并在 SourceTree 上执行,过程和合并到测试分支相同。

    • 若测试未通过,则重复上面的第 3 - 4 步。

  6. 测试在发布用分支上创建标签,并发布到线上测试环境。(测试)

    • 线上测试用标签名:T_{分支名}_{番号}

  7. 测试在正式发布后删除两个发布版本之前的旧分支。(测试)

    删除时需确认该任务是否已经测试通过并发布了。

  8. 测试在正式发布后将当前发布分支合并到 master 分支。(测试)

  9. 开发组长在正式发布后再次执行上述的第一步操作。(开发组长)

附 1. 预定发布但实际测试未通过的任务如何处理?

开发在该分支最新提交的基础上创建新分支 {新的发布编号}_{工作项编号}

注意:一定不要忘记创建新分支以免被误删。

附 2. 线下测试通过但线上测试未通过时如何如理?

  • 案 1:推迟发布时间。

  • 案 2:新建一个发布用分支({发布编号}_RELEASE_{番号})并将本次测试通过的其它任务分支依次合并过来。

附 3. SourceTree 的安装

  1. 下载安装文件(https://www.sourcetreeapp.com/
  2. 安装是第一步选择 Bitbucket 账户,并按照打开的网页注册账户。
  3. 注册成功后选择 返回上一步 并再次选择 Bitbucket 时会自动打开授权的网页。授权后安装程序会自动进行到下一步。
  4. Mercurial 也是一个版本管理系统,我们没有使用,可以取消勾选。
  5. 更多选项中推荐的自动转换回车换行的建议勾选。
  6. 之后默认安装即可。

附 4. 如何设置受保护分支?

附 5. 如何在 SourceTree 中关联 GitLab 的账户?

  1. 在 GitLab 的 用户设置 → 访问令牌 中创建个人访问令牌。

  2. 保存新创建的令牌(后面会使用到)。

  3. 在 SourceTree 中选择菜单 工具 → 选项 → 验证,点击 添加 按钮添加一个账户。

  4. 在弹出的 编辑托管账户 窗口中填入账户信息。

    • 托管服务器:GitLab CE
    • 托管 URL:http://192.168.0.113
    • 首选协议:HTTPS
    • 验证:Personal Access Token

  5. 刷新 Personal Access Token 按钮。

  6. 在弹出的 Windows 安全 窗口填入用户名和密码。

    • 用户名:第 1 步创建个人安全令牌时填入的用户名
    • 密码:第 2 步生成的个人安全令牌

  7. 点击 确定 按钮 自动返回 编辑托管账户 窗口并会显示 认证成功 的状态。

  8. 再次点击 确定 按钮。

  9. New Tab → Remote → Git Lab CE 账户Clone 项目。

  10. Clone 时的可以设置本地目录、本地项目名和检出的分支等。

附 6. 如何创建分支?

  1. 右键 BASE 标签对应的提交,选择 分支 操作。

  2. 输入创建的新分支名后,点击 创建分支 按钮。

    • 其它选项默认即可。

    • 当前的分支名不影响新创建的分支。

    • 检出新分支 默认是勾选的。如果当前分支有改动未提交,可能会导致切换到新分支时报错。

      注意: 此时新分支已经创建好了,提交 或 贮藏 当前分支的修改后直接切换到新分支即可,无需再次创建分支。

附 7. 如何创建标签?

  1. 右键需要创建标签的提交,选择 标签 操作。

  2. 添加标签。

    • 填写 标签名
    • 勾选 推送标签到 origin

  3. 如果忘记勾选 推送标签到 origin,可以右键选择本地标签,点击 推送到 → origin

附 8. 如何合并分支?

  1. 切换本地仓库到需要合并到的目标分支。

    如要合并任务分支 V2019007_3_T00042103 到测试分支 V_2019007_3_TEST ,则需要先切换到 V_2019007_3_TEST 分支。

  2. 点击菜单上的 合并 按钮。

  3. 在弹出的窗口选择 需要合并的源分支,选好后点击 确定

  4. 合并成功后会自动创建一个提交。

  5. 合并失败时,有冲突的文件可在 文件状态 中查看。

  6. 右击有冲突的文件,选择 解决冲突 → 打开外部合并工具

  7. 解决冲突后点击 标记为已解决 按钮。

  8. 移除 合并后残留的 orig 文件。

  9. 提交合并后的修改。

附 9. 如何设置外部合并工具?

  1. 选择菜单 工具 → 选项 中的 比较 标签。

  2. 外部对比工具合并工具 均选择 TortoiseMerge

    这个就是以前 SVN 中使用的合并工具。