Git 多人协作工作流
简介
使用版本控制软件 Git 多人协作开发,会根据项目规模、人员规模以及其它因素而采用不同的工作流,本文介绍一种适用于中等规模项目的工作流。更多关于 Git 工作流的介绍,参见此处。
Git 工作流
项目主要含有 master
和 develop
两个分支:master
分支用于储存正式发布的源码;develop
分支用于项目开发、功能发布以及修改 Bug 等。此外项目的每个开发者都会创建一个分支,该分支应该从 develop
分支上 checkout,开发者在自己的分支上进行开发,等功能丰富时,再将成果合并到 develop
分支上。
流程代码:
-
克隆项目
项目托管在 GitLab 上,项目在远程仓库中有
master
和develop
两个主要的分支,另外每个开发者工作时都会从develop
检出一个自己的分支。git clone URL
-
检出到本地分支
远程仓库中最新的开发源码位于
develop
分支中,从该分支中检出到本地mybranch
分支中。这里mybranch
指的是开发者在远程仓库拥有的分支名。git checkout -b mybranch origin/develop
-
将项目提交到远程仓库
当开发者为项目添加了许多功能,想要将其发布到远程仓库时,首先要在本地提交项目:
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 后,项目所有成员都会收到通知,大家都可以对本次改动发表意见。
-
释放正式源码
项目中具有权限的开发者,将
develop
分支并入master
,使最新功能合并到正式源码中。 -
将项目提交到产品源码服务器
所有项目的源码都托管在一个独立的服务器上,该服务器使用 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 是为了后续产品的发布以及回退作为标识。
-
将项目提交到产品工作服务器
应该有一个 Web UI 程序来跟产品源码服务器进行交互。可以通过该程序来发布以及回退特定版本的产品应用程序。源码到产品工作服务器上的同步可以考虑采用
rsync
来实现。