Git 多人协作工作流

简介

使用版本控制软件 Git 多人协作开发,会根据项目规模、人员规模以及其它因素而采用不同的工作流,本文介绍一种适用于中等规模项目的工作流。更多关于 Git 工作流的介绍,参见此处

Git 工作流

项目主要含有 masterdevelop 两个分支:master 分支用于储存正式发布的源码;develop 分支用于项目开发、功能发布以及修改 Bug 等。此外项目的每个开发者都会创建一个分支,该分支应该从 develop 分支上 checkout,开发者在自己的分支上进行开发,等功能丰富时,再将成果合并到 develop 分支上。

流程代码:

  1. 克隆项目

    项目托管在 GitLab 上,项目在远程仓库中有 masterdevelop 两个主要的分支,另外每个开发者工作时都会从 develop 检出一个自己的分支。

    git clone URL
    
  2. 检出到本地分支

    远程仓库中最新的开发源码位于 develop 分支中,从该分支中检出到本地 mybranch 分支中。这里 mybranch 指的是开发者在远程仓库拥有的分支名。

    git checkout -b mybranch origin/develop
    
  3. 将项目提交到远程仓库

    当开发者为项目添加了许多功能,想要将其发布到远程仓库时,首先要在本地提交项目:

    git add .
    git commit -m "message"
    

    在将项目提交到远程仓库时,需要获取并合并远程仓库 develop 分支上最近的更新:

    git pull —-rebase origin develop
    

    至于为何使用 --rebase 参数,请参考 git rebase 命令。在合并远程更新时,可能会发生冲突,此时需要手动解决冲突,并将代码提交到远程 mybranch 分支,并提交 Merge Request 来申请将自己的更新合并到 develop 分支中,等待 Reviewer 进行审查:

    # 查看是怎样的冲突
    git status
    # 先手动解决该冲突,然后在本地提交并继续合并冲突
    git add .
    git commit -m "message"
    git rebase -—continue
    git push origin mybranch
    # 在项目的 GitLab 页面提交 Merge Request,申请将 mybranch 合并到 develop
    

    GitLab 上提交 Merge Request 后,项目所有成员都会收到通知,大家都可以对本次改动发表意见。

  4. 释放正式源码

    项目中具有权限的开发者,将 develop 分支并入 master,使最新功能合并到正式源码中。

  5. 将项目提交到产品源码服务器

    所有项目的源码都托管在一个独立的服务器上,该服务器使用 bare Git 仓库来保存源码。假设该服务器主机名是 src_host ,具有 Git 权限的用户名是 repo。提供源码的保存,回退以及热部署等功能。

    开发者(特殊权限)首先需要将托管于 GitLab 远程仓库 master 分支的代码同步到本地 master

    # 切换分支
    git checkout master
    # 拉取 GitLab 上的代码到本地
    git pull origin master
    

    然后向源码服务器提交代码,初次提交时,先要设置远程地址 repo

    git remote add repo repo@src_host:/path/to/project
    

    提交代码并为本次提交打tag:

    git push repo master
    git tag 1.0.627
    git push repo 1.0.627
    

    这里打 tag 是为了后续产品的发布以及回退作为标识。

  6. 将项目提交到产品工作服务器

    应该有一个 Web UI 程序来跟产品源码服务器进行交互。可以通过该程序来发布以及回退特定版本的产品应用程序。源码到产品工作服务器上的同步可以考虑采用 rsync 来实现。

Previous
Next