什么是 Git-flow?
简单的说,Git-flow 就是利用 Git 分支能力的开发策略之一。 可以采用 Git-flow 来管理源代码以提高开发效率。 并且由于存在共同规则,可以最大限度地减少协作时出现的问题。 最近,很多项目都采用了 Git-flow 策略。 (并非所有项目都好)
下面介绍 Git-flow 中使用的分支以及如何使用它们。
Git-flow 分支
参照:https://nvie.com/posts/a-successful-git-branching-model
这是一个解释 Git-flow 的图表。 这里主要的主要分支是 master 分支和 develop 分支。 并且有支持主分支的feature、release和hotfix分支。
-
master
- 管理作为产品发布给用户的源代码的分支
- 按标签管理版本
- 没有开发工作
-
develop
- 实际执行开发工作的分支
- 错误修复
- 通过创建功能分支来开发新功能
-
feature
- 基于develop分支创建的分支
- 开发新功能
- 开发完成后合并到开发分支
-
release
- 基于develop分支创建的分支
- 执行微调(例如错误修复)的分支,即在发布前进行 QA
- 完成QA后,合并到master,开发分支
-
hotfix
- 在发布版本中快速修复错误的分支
- 合并到master,修改后立即开发分支
这样,Git-flow 可以让你在管理源代码的同时,在创建、修改和合并分支的过程中明确每个分支的用途。
让我们实际敲敲命令吧。
让我们实际接触 Git-flow
在这里,我们假设安装了 Git 和 Git-flow。
首先,初始化 Git-flow。
git flow init -d
-d 选项是一个自动分配默认分支名称的选项。
使用 git branch 命令检查分支信息。
git branch
* develop
master
可以看到,develop分支和master分支都是在develop分支中创建和检出的。
feature分支中的功能开发
现在让我们使用 start 命令来创建一个用于开发新功能的feature分支。
git flow feature start <feature name>
当我执行 git branch 命令并检查它时
git branch
develop
* feature/<feature name>
master
已创建feature/<feature name>并自动检出,设置<feature name>,以便您了解要开发的功能。
现在让我们在这个分支中开发新功能。 这一次,我将通过创建一个文本文件来替代它。
touch gf-handson.txt
现在功能开发已经完成,使用finish命令将其合并到开发分支中。
git flow feature finish <feature name>
通过执行此命令,将自动执行以下任务。
- 在develop分支上checkout
- 合并feature分支
- 删除feature分支
如果在 GitHub 等平台上与其他开发人员合作,还可以使用release命令将feature分支推送到存储库。
git flow feature publish <feature name>
相反,如果要从存储库中引入feature分支,请使用 pull 命令。
git flow feature pull origin <feature name>
准备发布release分支
将发布的所有功能合并到develop分支后,在release分支中进行 QA。
让我们创建一个release分支。
git flow release start <version>
另外,如果检查 一下git branch
git branch
develop
master
* release/<version>
这样,release / <version> 分支就被创建并自动签出。 在这个分支上做 QA 工作。
完成 QA 工作后,您就可以发布了。 现在,使用finish命令将其合并到 master 和 develop 分支。
git flow release finish <version>
通过执行此命令,将自动执行以下任务。
- 将release分支合并到master分支
- 将release分支合并到develop分支
- 删除release分支
如果正在与feature分支等其他开发人员协作,请使用publish命令推送到存储库。
git flow release publish <version>
使用 track 命令从存储库中引入release 分支。 这不是pull,所以要小心。
git flow release track <version>
发布
此时,master分支拥有新发布版本的源代码。
最后,将 master 分支与tag一起推送到存储库并发布它。
git push --tags
发布后错误修复
如果发布版本出现紧急bug,hotfix分支会处理。
首先,创建一个hotfix分支。
git flow hotfix start <version>
修复创建的 hotfix 分支中的紧急错误后,使用finish命令将其合并到 master 分支。
git flow hotfix finish <version>
通过执行此命令,将自动执行以下任务。
- 将hotfix 分支合并到master分支
- 将hotfix 分支合并到develop分支
- 删除hotfix 分支
这样,可以使用 Git-flow 模型让项目开发更加高效。
最后
至此,我已经解释了 Git-flow 的概念和开发流程。
使用 Git-flow 进行开发时要记住的一件事是避免每个分支中的源代码冲突。 例如,从 develop 分支创建的功能分支应该始终包含 develop 的内容。 而在develop分支,在合并feature分支之前,需要保持没有feature分支的内容。
而且如果你使用像 GitHub 这样的平台与你的团队或其他开发人员协作,经常进行推送和拉取以防止代码冲突。
网友评论