GitFlow使用
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理
以上都是扯犊子 我就只知道用他来做项目版本管理的 下面说下git flow 这是个什么东西呢 度娘都没有百科呢(丢) 大概就是他提供了一种方便快捷的管理项目版本/分支的功能吧 把你需要用git分几步命令的操作 使用git flow 仅仅只需一个命令就搞定了 另外团队成员都是使用这种 统一规范 创建的版本啦 分支不会乱套 大概就是这样吧 个人用到的就这么多 233 更多高级玩意自己去发现吧
GitFlow安装
- 需要先安装 Git 现在一些高版本的Git中已经集成了
gitflow
- 如果没有的话 上跳 github->gitflow 这里有详细的安装说明
GitFlow的简单实用
准备工作
- 更新
master
分支 - 更新
develop
分支
初始化
|
|
然后他会询问你一些基本的命名设置直接一路 回车 默认就可以了
注意:如果是第一次创建的项目或者有命名不规范的分支结构的时候 在执行init初始化的时候会让你多选择一些选项
- Which branch should be used for bringing forth production releases?
master【这里就是列出的可选分支列表】
Branch name for production releases: [master]像这个就是在询问你准备生产环境的一个分支 他默认给了你推荐的是master 就是最后那个中括号的内容就是默认推荐的 像我之前有过不规范的命名分支瞎写的 这里他就会给你推荐最新的那个分支如果你不想用默认的可以直接在后面打上需要作为生产环境的分支的名字 以前不是很懂就胡乱打了个分支 结果跪了都是泪,推荐master哦
- Branch name for “next release” development: [develop]
这个是在问你选择开发环境的一个分支 一般推荐是develop 他默认的也是的 不想选别的直接回车
后面还有一些选择统统默认好了
Git flow feature
如果你准备开发一个新的功能
|
|
start 后面就是你要创建的分支的名字 一般新功能使用feature
分支 在后面默认中他是帮你从develop
分支为基础创建的这个新的分支
当你完成功能开发 需要推送到服务器上时
|
|
他会帮你新功能分支上的内容合并到develop分支上 并删除该feature分支,然后切换回develop
分支 你可以通过git log
命令来查看他的具体操作哦
Git flow release
当你的功能点都完成后 你需要发一个发布的版本 我们可以创建一个release
分支 这个也是基于develop
分支创建的
|
|
注意这个release版本的命名 我们一般习惯是v+3位数 因为这是一个新的项目还没有tag标签就从0开始了 那就是v0.0.1了 这个看公司规定吧
如果有tag标签 请先使用git tag
命令来查询最近的release版本 在此基础上+1作为新的版本号 比如查询出来的最近的是v1.2.3
那新创建的版本推荐名:v1.2.4
因为我们开发中3位的都是release版本号所以只需要找最近的一个3位数的release版本号就行了 如果你们固定的不是3位数就要看具体的喽
当我们完成这个发布分支 验证测试完需要正式发布了 我们只需要执行
|
|
他在后面会帮我们合并到master
并打上tag
标签 并删除该release分支 同时合并到develop
保证2个分支的同步
那现在我们在使用git tag
命令就能看到tag标签了 就是我们刚刚完成的那个分支的版本号
Git flow hotfix
当我们出现bug需要修复又不想影响发布分支 可以新建一个hotfix
分支来修复bug
|
|
它在后面是从master
分支帮我们创建的这个hotfix
新分支
注意这个命名版本号:我们一般习惯使用v+4位数来命名版本号 需要先查询最新的一个
release
分支因为 release 是3位的 在他的基础上加一位 因为我们上面刚刚完成的release版本号是v0.0.1所以我们新建的hotfix分支的名字就是v0.0.1.1
eg: 如果我们git tag
出的最新 release 为v1.2.3
那我们的hotfix分支可以命名为v1.2.3.1
以此类推
当我们彻底修复bug 需求提交合并
|
|
他会在后面帮我们把分支合并到master
然后打上标签 并删除该分支 这些都是可以通过git log
看到的
现在我们的tag标签又增加了git tag
方便我们后续的创建
OK 我经常用到的暂时就这么多 写下加深自己的印象,因为真的坑爹了我好多次 都是命名不规范导致的问题