Git 工作流
当文字类工作需要协作时,需要采用工作流,来处理内容的分工和组合。
常见的工作流有:
- 中心化的工作流
- Fork 工作流
- Gitflow 工作流
中心化的工作流
和 SVN 一样,大家仅在一个仓库一个分支上操作,参与者克隆仓库协作。
和远程仓库之间操作是:
# 本地每次变更提交后,需要整合远程仓库内容
git pull --rebase origin main
# 如果内容有关联会出现冲突,解决冲突,本地验证
# 然后再推送本地变更
git push origin main
Fork 工作流
开源社区常用,会有一个官方仓库、多个贡献者仓库。主要步骤是:
- 开发者先从官方仓库分叉 (Fork) 出来一个仓库副本到自己空间下
- 克隆自己空间下的副本仓库到本地,进行编辑
- 推送变更内容到自己空间下的副本仓库
- 向官方仓库发起 Pull Request
- 官方仓库维护者评审和验证变更
- 通过评审和验证,则合并进官方仓库
Fork 工作流中,一般设定 upstream
为官方仓库:
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
# 当官方项目已经向前推进,则需获取官方新的提交内容
git pull upstream main / git merge upstream/main
查看副本仓库:
$ git remote -v
# origin 是 clone 时默认创建的
> origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
> origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
# upstream 是后来设定获取官方更新
> upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
> upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
Fork 工作流中,官方仓库管理员不用给每个参与的开发者分配权限。
Gitflow 工作流
Gitflow 工作流,协作者在一个仓库中基于分支隔离不同阶段、不同范围的数据内容。
主要操作方式是:
- 划分出用于“主分支、发布版本、临时协作”三种不同用途的分支
- 发布版本用分支,有正常版本发布、维护版本发布,不同团队操作方式不一
- 强版本的是
feature|release/<version_number> + tag → main
,封版后会将内容合并进主分支,并删除发布版本分支 - 重交付的是
develop → qa → staging → production + tag
- 强版本的是
- 临时协作用分支,比较统一
feature
,功能分支,用于处理当前阶段任务,来自版本分支bugfix
,Bug 分支,修复不紧急 Bug,来自正式环境、或测试环境hotfix
,Bug 分支,修复紧急 Bug,来自正式环境
Gitflow 工作流,通过定义一个严格的分支和合并模型,用来管理发布周期,能明确的沿着路线图演进,又能应对未知异常和危险情况,提升项目稳健性。
不同类型、不同规模、不同交付方式项目,采用合适的协作工作流,帮助我们解决问题,要避免被其束缚掣肘。