Git-Flow 和 GitLab-Flow 都有 release 分支,虽然都称为 release,但作用完全不同。
在 Git-Flow 中,release 是介于 dev 和 master 之间,作用是发布前的准备工作(通常应该是用于更全面测试),从 dev 分叉 release 是为了避免阻塞 dev 分支上继续开发新功能;release 属于临时性分支,准备工作完成后是以 Fast-Forward 方式合并到 master;release 上可能会修复一些 bug,所以还要把 release 合并回 dev;发布软件是从 master 上构建。从名称看,release 应该叫做 pre-release,而 master 应该叫 release 。
在 GitLab-Flow 中,release 是从 master 分叉出来,可能会有多个 release 分支,对应软件不同版本。从 master 分叉一个 release (版本)后,可能发现还需要合入一些新功能,所以通过 cherry-pick 方式从 master 中挑选某些功能,不能直接从 master 合并,因为仅需要 master 上的某些新功能而不是全部新功能。release 属于长期分支,而且分叉以后不会再与其它分支合并。除非某个版本不再维护,不然对应 release 会持续存在,因为发布出去的软件随时可能发现 bug 需要修复。
展开