Git Flow

2024-03-04 985点热度 0条评论

Git Flow 概念

在使用Git的过程中如果没有清晰流程和规划,否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。

Git Flow 的常用分支

  • Production 分支

也就是我们经常使用的Master分支,这个分支最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改

  • Develop 分支

这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支

  • Feature 分支

这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release

  • Release分支

当你需要一个发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支

  • Hotfix分支

当我们在Production发现新的Bug时候,我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release

Git Flow 如何使用

  • Master/Devlop 分支

所有在Master分支上的Commit应该打上Tag,一般情况下Master不存在Commit,Devlop分支基于Master分支创建

master / develop
  • Feature 分支

Feature分支做完后,必须合并回Develop分支, 合并完分支后一般会删点这个Feature分支,毕竟保留下来意义也不大。

feature
  • Hotfix 分支

hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag。

hostfix

Git Flow 命令示例

初始化

该命令会引导你进行一些基本配置,如选择主分支(通常是master)、开发分支(通常是develop)等。

git flow init

Feature

# 新建feaeure分支
git flow feature start MYFEATURE

# 发布新特性
git flow feature publish MYFEATURE

# 完成feaeure
git flow feature finish MYFEATURE

# 取得一个发布的新特性分支
git flow feature pull origin MYFEATURE

# 跟踪在origin上的特性分支
git flow feature track MYFEATURE

Release

# 开始创建一个 release 分支
# 你可以选择提供一个 [BASE] 参数,即提交记录的 sha-1 hash 值,来开启动 release 分支. 这个提交记录的 sha-1 hash 值必须是'develop' 分支下的。
git flow release start RELEASE [BASE]

# 发布 Release
git flow release publish <RELEASE-NAME>

# 完成 release 版本
git flow release finish <RELEASE-NAME>

# 签出 release 版本的远程变更
git flow release track <RELEASE-NAME>

# 删除 Release 版本
git flow release delete <RELEASE-NAME>

# 打上tag 
git tag -a v0.1.0 RELEAS
git push --tags

使用示例

# 初始化 Git Flow
git flow init

# 开始一个新的 release 分支
# 从develop分支创建一个新的发布分支,假设发布版本为v1.0.0,命令如下:
git checkout develop
git flow release start v1.0.0

# 如果想基于特定的提交或分支创建发布分支,可指定BASE,例如
git flow release start v1.0.0 develop
git flow release start v1.0.0 <commit_hash>

# 在Release分支进行操作
# 在发布分支上,可以进行一些发布前的准备工作,如更新版本号、进行最后的测试、修复小 bug 等。

# 将 release 分支合并到 master 分支
# 该命令会自动将release/v1.0.0分支合并到master分支,并为master分支上的这次提交打一个版本标签v1.0.0。
git flow release finish v1.0.0

# 推送远程
git push origin master
git push origin develop

# 推送Tags
git push --tags

Hotfix

# 开始 git flow 紧急修复
git flow hotfix start VERSION [BASENAME]

# 完成紧急修复
git flow hotfix finish VERSION

使用建议

如果你的代码没有清晰流程和规划,那么强烈推荐使用Vincent Driessen 提出的GIt flow
让你的代码管理骚起来。

Jalena

原创内容,转载请注明出处! 部分内容来自网络,请遵守法律适用!

文章评论