git WorkFlow规范
1、介绍
WorkFlow 的字面意思,工作流,即工作流程。工作流不涉及任何命令,它是一个规则,是由开发者自定义自遵守的规则,需要我们每个开发者熟悉并且也必须遵守的规则。
2、名词介绍
主要分支:
• master:该分支上的最新代码永远是版本发布状态 。
• develop:该分支则是最新的开发进度。
辅助分支:
• feature:该分支为最新需求功能的开发分支 ,是独立功能所在的分支。命名规则以feature开头,功能单词(或简写)结尾,中间以中划线连接。例:feature-share、feature-activity等。
• test:该分支为服务端特有分支,用来给测试人员测试的分支(包含移动端功能测试)。该分支包含开发者所有feature的功能。test分支与develop分支是同步的。
• release:该分支上的代码为需要发布上线的功能集合,如果功能不需要发布则一定不要合入该分支。新版本发布后删除自己即可。命名规则同feature分支,但结尾不同,以release开头,版本号结尾。例:release-v1.0.1。
• hotfix:该分支是用来做线上紧急 bug 修复的分支。从master分支检出,合入test分支进行测试,测试通过后必须合入release分支,然后可以随版本发布或者如果需要紧急发布,则可直接合入master分支进行发布。
3、合入&拉取&提交规则
分支名称 | 合入规则 | 拉取规则 | 提交规则 | 操作者 |
---|---|---|---|---|
master | 在release分支测试通过的功能 | 初始化:拉取develop分支;其他:只允许拉取hotfix分支 | 不允许任何人在此分支提交代码 | 管理员 |
develop | 在自测通过的前提下,任何普通开发者都可以合入代码 | 所有feature分支都基于这个分支拉取 | 按照提交规则提交,见规则4.1 | 管理员&开发者 |
feature | 尽量避免两个独立feature相互合并 | 无 | 按照提交规则提交,见规则4.1 | 管理员&开发者 |
test | 由开发者合入develop分支的同时合入该分支 | 无 | 按照提交规则提交,见规则4.1 | 管理员&开发者 |
release | 只能合入在test分支测试通过的feature | 无 | 无 | 管理员 |
hotfix | 无 | 无 | 按照提交规则提交,见规则4.1 | 管理员&开发者 |
4、工作流程
移动端
服务端
服务端-原图
5、命令学习
5.1 merge & rebase
merge | rebase |
---|---|
自动创建一个新的commit。如果合并的时候遇到冲突,仅需要修改后重新commit ✅优点:记录了真实的commit情况,包括每个分支的详情 ✅缺点:因为每次merge会自动产生一个merge commit,所以在使用一些git 的GUI tools,特别是commit比较频繁时,看到分支很杂乱。 注意:只有在冲突的时候,解决完冲突才会自动产生一个commit。\color{red}{注意:只有在冲突的时候,解决完冲突才会自动产生一个commit。}注意:只有在冲突的时候,解决完冲突才会自动产生一个commit。 |
俗称变基,变基是什么? 找公共祖先 执行rebase后,提交会被移除,并且 feature 分支被重置到 master 分支,feature 分支上的提交被重新应用到 master。差别在于这些重新应用的提交是原始的副本,它们的 SHA-1 值和原来的提交不一样。如果遇到冲突需要执行一下三步解决: • 修改冲突部分 • git add • git rebase --continue ✅优点:得到更简洁的项目历史,去掉了merge commit ✅缺点:如果合并出现代码问题不容易定位,因为re-write了history |
![]() |
![]() |
上游分支合并下游分支内容时 | 下游分支更新上游分支内容时 |
5.2 cherry-pick
cherry-pick可以将某个分支上的某一个功能合入到其他分支,依据是C这一次的commit SHA1
命令方式 | Idea工具方式 |
---|---|
1、切换到 develop 分支。 2、通过 git log feature,找到 C 的 SHA1 值。 3、通过 git cherry-pick <C的SHA1> ,将 C 的修改内容合并到当前内容分支 develop 中。 4、若无冲突,过程就已经完成了。如果有冲突,按正常冲突解决流程即可。 |
切换到 develop 分支。 右键你要cherr-pick的功能,选择cherr-pick即可 ![]() |
5.3 stash
该命令是将本地修改暂存。
当你需要切换分支时,但此时本地有修改,为了避免切换分支导致的冲突,你可以执行git stash将本地修改暂存起来,等到处理完后,切回原有分支再pop出来。【对应Idea操作是Seleve】
git stash // 将本地修改暂存到git缓存区
git stash pop // 将最近一次缓存内容恢复
git stash pop stash@{1} // 恢复指定索引的暂存内容
5.4 reset
撤销、重置
6、其他
6.1、提交信息编写规范
[提交的类型][类型关键词(或模块名称或功能名称)]
–该行是空行–
该部分填写详细修改点
举例
[feature][商城订单]
1、新增商城首页分享功能
2、修复商场首页下滑卡顿的bug
3、优化xxx页面的加载性能
说明:
1、目前提交的类型有feature 、 bug和optimization,尽量一次提交类型单一。(如果一次提交内同时有feature和bug,那你该考虑一下是不是可以先把feature提交了再提交bug的修复,这样也会方便回滚。如果没法分开,那么类型只写一个即可,但需要再详情部分描述清楚)
2、类型关键词:尽量和禅道的feature名称保持一致。如果是禅道上登记的bug,请附上bug id(例如:[bug][商城订单-482])
6.2 在线学习网站
Git Online
7、疑难问题
git WorkFlow规范相关推荐
- 多人协作git workflow规范
分支说明 master分支 master分支只部署到线上.每次新功能在测试环境验证通过了才可以合并到master分支.要保证master分支就是线上最新代码. develop分支 用于部署到集成测试环 ...
- 实用 Git Workflow
创建分支 分支是 Git 的核心概念,同时 Git Workflow 也是基于分支进行操作. 当你新增功能或修复 bug 时候,新建一个分支是一个不错的选择,这将不会影响主分支 master. 所以你 ...
- Git 使用规范流程
团队开发中,遵循一个合理.清晰的Git使用流程,是非常重要的. 否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护. 下面是ThoughtBot的Git使用规范流程.我从中学 ...
- 你可能会忽略的 Git 提交规范
作者:Jartto's blog 来源:http://jartto.wang/2018/07/08/git-commit/?hmsr=toutiao.io&utm_medium=toutiao ...
- Git workflow
Git workflow 大神镇楼: 这人不用说,应该都认识,他基本干了两件事,一个是Linux,一个就是git.每一件事,都在IT史上创建了一个巨大的Tag. Git是什么 Git能干什么? Git ...
- git 工作流和git commit规范
目的 统一团队的Git工作流,包括分支使用.tag规范.issue等 统一团队的Git Commit日志标准,便于后续代码review,版本发布以及日志自动化生成 git工作流 git flow工作流 ...
- 从0到1开发实战手机站(二):Git提交规范配置
生活不能随意过,代码也不能随意写. 前一篇文章我们已经把项目搭建好了,那是不是马上就开始写页面了呀? NO! 无论在哪家公司,都会有相应的代码规范.新入职的员工往往第一步就要接受代码规范的学习. 既然 ...
- Git 提交规范-Java程序员收藏必备
你可能会忽略的 Git 提交规范 规范是建立在程序开发者与程序阅读者一个沟通的桥梁,是一个团队必须要严格遵守的约定 --动力节点Java学院 一.为什么需要规范? 无规矩不成方圆,编程也一样. 如果你 ...
- 项目中使用粘性布局不起作用_项目中的 Git 使用规范
祖师爷 Linus 在创造了伟大的 Linux 之后,又创造了应用最广泛的代码管理工具 -- Git,极大地提高了程序员的生产力. 现如今大部分项目都在使用 Git 作为代码管理工具,不论是在代码管理 ...
最新文章
- Linux常用 的命令
- poj Buy Tickets
- 致技术创业的朋友:其实销售很简单(Z)
- JAVA 网络编程小记
- DP问题之 捞鱼问题
- ffmpeg.c函数结构简单分析(画图)
- 生活杂谈-空调的修理
- poker2的配置使用
- 超级计算机计算峰值,世界运算最快计算机,中国神威·太湖之光(其峰值计算速度达每秒1...
- ubuntu服务器lxde桌面,LXDE桌面环境简介
- 使用百度ai识别身份证信息
- matlab计算二重指数积分,MATLAB计算二重数值积分(dblquad),来学习吧
- java中级工程师所需的技能_java工程师简历专业技能填写样本
- [文本纠错] pycorrector框架训练
- 游戏鼠标的dpi测试软件,教你自己测试鼠标的DPI
- 软件测试学习笔记与思考(1)---软件测试基础
- eNSP学习记录一——创建网络拓扑并配置
- 神秘大佬写的运营思维课
- 遥感地物波谱数据库网站汇总
- 计算机硬盘安装的两大,电脑硬盘装2个1TB的硬盘好还是1个2TB的硬盘好?
热门文章
- mysql DAYOFWEEK 和 WEEKDAY获取星期
- 一种基于深度学习的单导联心电信号睡眠呼吸暂停检测方法
- Ceres Solver安装及bug解决
- LM321 低功耗单运算放大器 1MHZ增益带宽积 用于充电器 适配器
- 施努卡:机器视觉技术让机器拥有更聪明的“大脑”和更明亮的“眼睛”
- 北京四季青租房-----隐藏在中介(安信嘉和)中的黑二房东--韩亮
- 【福利】【两周年庆典,送书第二弹】机器学习方法体系汇总
- 计算机网络原理fin,一个动画看懂网络原理之TCP建立和释放过程
- Linux系统Debian安装
- 2018互联网月饼哪家强?阿里有情怀、腾讯最实在、咪咕最暖萌、联想最简单粗暴......