网站首页 > 技术文章 正文
由于 git 的分支非常的方便,因为 git 互相协作的方式也比较多,但是典型分支协作模型如下图,很多都是它的变种,所以需要理解下面的这张图,这张图的信息如下:
1. 对于分支的规划:
a) feature 分支,可发新功能的分支,通常是从 develop 分支签出来的
b) develop 分支,集合了所有的开发功能的分支,大部分时间它上面的代码是不稳定的
c) release 分支,经过测试了可以发布部署的分支代码
d) hotfix 分支,用于修复线上 bug 的分支,从 master 分支签出来
2) 几个典型的事件:
a) 最开始的时候没有 develop 分支,这时候从 master 分支签出了 develop 分支,develop 包含了目前所有的功能代码
b) 从 develop 分支签出的 feature 分支都合并会 develop 分支,开发到一定程度的时候,签出 release 分支
c) 如果 release 分支创建了,它之后只承担修复 bug 的作用,不再开发新功能,并且修复的 bug 也会合并回 develop 分支,防止 develop 分支以后的代码重现 bug
d) 当 release 分支测试稳定后,就合并到 master 分支并打上 tag 标签
e) 处于 master 的分支通常足够稳定,但是出现了 bug 就会签出 hotfix 分支来修复bug,重点是修复完成后 hotfix 分支必须同时合并到 master 和 develop 分支
针对上面的分支模型,抽象除了 git-flow 工具链,安装参考 https://github.com/nvie/gitflow/wiki/Installation。
开发的大致使用流程如下:
1. git flow init 初始化一个仓库,一般使用默认的分支名称比较清晰 (会创建 master 和 develop)
2. git flow feature start abc 开始开发一个 abc 功能的分支 (会基于 develop 创建 feature/abc)
3. git flow feature finish abc 提交开发完成的 abc 功能 (会把 feature/abc 合并到 develop 并删除 feature/abc)
4. git flow release start v1.0 创建一个预发布的分支 (会从 develop 创建 release/v1.0)
5. git flow release finish v1.0 创建正式的发布分支和 tag 标签 (会把 release/v1.0 合并到 master 并打上标签 v1.0,还会删除 release/v1.0)
修复 bug 的大致流程如下:
1. git flow hotfix start abc 从 master 创建修复 bug 的分支 (会创建 hotfix/abc 分支)
2. git flow hotfix finish abc 完成了 bug 的修复 (会把 hotfix/abc 合并到 master 递增 tag,还会合并到 develop 并删除 hotfix/abc 分支)
实际使用中还有一种特殊情况:
如果线上 bug 出现,创建 hotfix 的时候 release 分支处于预发布状态,根据实际情况考虑是在当前发布版本修复(hotfix 同时合并到 develop、release 分支)还是以后修复(只需合并到 develop 分支)
这个分支模型非常适用于基于版本的发布,如果要使用的话,团队里的成员都要使用,否则可能把分支搞乱。
最后,你可能经常听到 PR,PR 是 pull request 的简写,他是一种参与开源项目协作的方式。
如果你对一个仓库有权限提交,那么就可以直接发起 PR 或者直接合并代码,否则你需要 fork 仓库,clone 到本地,因为你只有对自己仓库的操作权限,你提交修复代码到分支,并推送到自己的仓库,然后去原仓库地址在线创建一个合并请求,选择你提交的分支,然后可以基于这个 PR 做讨论、测试、改进,直到你的提交被认可,可以主动去邀请一些人来 review 你的提交,最后被合并进主干分支。
- 上一篇: 使用Git仓库对产品项目进行分支管理
- 下一篇: Git分支管理策略(git创建新分支)
猜你喜欢
- 2024-10-27 git 入门教程之紧急修复(git checkout . 恢复)
- 2024-10-27 项目版本管理的最佳实践:飞流Flow篇
- 2024-10-27 DevOps(4)之分支模型(ps4如何构建画布)
- 2024-10-27 Git 在团队中的最佳实践——如何正确使用Git Flow
- 2024-10-27 鹅厂程序员干货分享 | 四种工作流,教你如何使用 GitHub
- 2024-10-27 Linux下git和github搭建使用教程(linux搭建git仓库)
- 2024-10-27 git这个小技巧非常实用,值得每个程序员学习
- 2024-10-27 Git实战002:Git快速入门使用详解(git简单教程)
- 2024-10-27 git 多人在同一分支上迭代开发时,如何保证分支提交历史保持线性
- 2024-10-27 Git基础知识(七)--分支开发工作流
- 11-26Win7\8\10下一条cmd命令可查得笔记本电脑连接过的Wifi密码
- 11-26一文搞懂MySQL行锁、表锁、间隙锁详解
- 11-26电脑的wifi密码忘记了?一招教你如何找回密码,简单明了,快收藏
- 11-26代码解决忘记密码问题 教你用CMD命令查看所有连接过的WIFI密码
- 11-26CMD命令提示符能干嘛?这些功能你都知道吗?
- 11-26性能测试之慢sql分析
- 11-26论渗透信息收集的重要性
- 11-26如何查看电脑连接过的所有WiFi密码
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)