什么是 Git-flow?
简单的说,Git-flow 就是利用 Git 分支能力的开发策略之一。 可以采用 Git-flow 来管理源代码以提高开发效率。 并且由于存在共同规则,可以最大限度地减少协作时出现的问题。 最近,很多项目都采用了 Git-flow 策略。 (并非所有项目都好)
下面介绍 Git-flow 中使用的分支以及如何使用它们。
Git-flow 分支
这是一个解释 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
当我执行 git branch 命令并检查它时
git branch
develop
* feature/
master
已创建feature/
现在让我们在这个分支中开发新功能。 这一次,我将通过创建一个文本文件来替代它。
touch gf-handson.txt
现在功能开发已经完成,使用finish命令将其合并到开发分支中。
git flow feature finish
通过执行此命令,将自动执行以下任务。
- 在develop分支上checkout
- 合并feature分支
- 删除feature分支
如果在 GitHub 等平台上与其他开发人员合作,还可以使用release命令将feature分支推送到存储库。
git flow feature publish
相反,如果要从存储库中引入feature分支,请使用 pull 命令。
git flow feature pull origin
准备发布release分支
将发布的所有功能合并到develop分支后,在release分支中进行 QA。
让我们创建一个release分支。
git flow release start
另外,如果检查 一下git branch
git branch
develop
master
* release/
这样,release /
完成 QA 工作后,您就可以发布了。 现在,使用finish命令将其合并到 master 和 develop 分支。
git flow release finish
通过执行此命令,将自动执行以下任务。
- 将release分支合并到master分支
- 将release分支合并到develop分支
- 删除release分支
如果正在与feature分支等其他开发人员协作,请使用publish命令推送到存储库。
git flow release publish
使用 track 命令从存储库中引入release 分支。 这不是pull,所以要小心。
git flow release track
发布
此时,master分支拥有新发布版本的源代码。
最后,将 master 分支与tag一起推送到存储库并发布它。
git push --tags
发布后错误修复
如果发布版本出现紧急bug,hotfix分支会处理。
首先,创建一个hotfix分支。
git flow hotfix start
修复创建的 hotfix 分支中的紧急错误后,使用finish命令将其合并到 master 分支。
git flow hotfix finish
通过执行此命令,将自动执行以下任务。
- 将hotfix 分支合并到master分支
- 将hotfix 分支合并到develop分支
- 删除hotfix 分支
这样,可以使用 Git-flow 模型让项目开发更加高效。
最后
至此,我已经解释了 Git-flow 的概念和开发流程。
使用 Git-flow 进行开发时要记住的一件事是避免每个分支中的源代码冲突。 例如,从 develop 分支创建的功能分支应该始终包含 develop 的内容。 而在develop分支,在合并feature分支之前,需要保持没有feature分支的内容。
而且如果你使用像 GitHub 这样的平台与你的团队或其他开发人员协作,经常进行推送和拉取以防止代码冲突。