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规范相关推荐

  1. 多人协作git workflow规范

    分支说明 master分支 master分支只部署到线上.每次新功能在测试环境验证通过了才可以合并到master分支.要保证master分支就是线上最新代码. develop分支 用于部署到集成测试环 ...

  2. 实用 Git Workflow

    创建分支 分支是 Git 的核心概念,同时 Git Workflow 也是基于分支进行操作. 当你新增功能或修复 bug 时候,新建一个分支是一个不错的选择,这将不会影响主分支 master. 所以你 ...

  3. Git 使用规范流程

    团队开发中,遵循一个合理.清晰的Git使用流程,是非常重要的. 否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护. 下面是ThoughtBot的Git使用规范流程.我从中学 ...

  4. 你可能会忽略的 Git 提交规范

    作者:Jartto's blog 来源:http://jartto.wang/2018/07/08/git-commit/?hmsr=toutiao.io&utm_medium=toutiao ...

  5. Git workflow

    Git workflow 大神镇楼: 这人不用说,应该都认识,他基本干了两件事,一个是Linux,一个就是git.每一件事,都在IT史上创建了一个巨大的Tag. Git是什么 Git能干什么? Git ...

  6. git 工作流和git commit规范

    目的 统一团队的Git工作流,包括分支使用.tag规范.issue等 统一团队的Git Commit日志标准,便于后续代码review,版本发布以及日志自动化生成 git工作流 git flow工作流 ...

  7. 从0到1开发实战手机站(二):Git提交规范配置

    生活不能随意过,代码也不能随意写. 前一篇文章我们已经把项目搭建好了,那是不是马上就开始写页面了呀? NO! 无论在哪家公司,都会有相应的代码规范.新入职的员工往往第一步就要接受代码规范的学习. 既然 ...

  8. Git 提交规范-Java程序员收藏必备

    你可能会忽略的 Git 提交规范 规范是建立在程序开发者与程序阅读者一个沟通的桥梁,是一个团队必须要严格遵守的约定 --动力节点Java学院 一.为什么需要规范? 无规矩不成方圆,编程也一样. 如果你 ...

  9. 项目中使用粘性布局不起作用_项目中的 Git 使用规范

    祖师爷 Linus 在创造了伟大的 Linux 之后,又创造了应用最广泛的代码管理工具 -- Git,极大地提高了程序员的生产力. 现如今大部分项目都在使用 Git 作为代码管理工具,不论是在代码管理 ...

最新文章

  1. Linux常用 的命令
  2. poj Buy Tickets
  3. 致技术创业的朋友:其实销售很简单(Z)
  4. JAVA 网络编程小记
  5. DP问题之 捞鱼问题
  6. ffmpeg.c函数结构简单分析(画图)
  7. 生活杂谈-空调的修理
  8. poker2的配置使用
  9. 超级计算机计算峰值,世界运算最快计算机,中国神威·太湖之光(其峰值计算速度达每秒1...
  10. ubuntu服务器lxde桌面,LXDE桌面环境简介
  11. 使用百度ai识别身份证信息
  12. matlab计算二重指数积分,MATLAB计算二重数值积分(dblquad),来学习吧
  13. java中级工程师所需的技能_java工程师简历专业技能填写样本
  14. [文本纠错] pycorrector框架训练
  15. 游戏鼠标的dpi测试软件,教你自己测试鼠标的DPI
  16. 软件测试学习笔记与思考(1)---软件测试基础
  17. eNSP学习记录一——创建网络拓扑并配置
  18. 神秘大佬写的运营思维课
  19. 遥感地物波谱数据库网站汇总
  20. 计算机硬盘安装的两大,电脑硬盘装2个1TB的硬盘好还是1个2TB的硬盘好?

热门文章

  1. mysql DAYOFWEEK 和 WEEKDAY获取星期
  2. 一种基于深度学习的单导联心电信号睡眠呼吸暂停检测方法
  3. Ceres Solver安装及bug解决
  4. LM321 低功耗单运算放大器 1MHZ增益带宽积 用于充电器 适配器
  5. 施努卡:机器视觉技术让机器拥有更聪明的“大脑”和更明亮的“眼睛”
  6. 北京四季青租房-----隐藏在中介(安信嘉和)中的黑二房东--韩亮
  7. 【福利】【两周年庆典,送书第二弹】机器学习方法体系汇总
  8. 计算机网络原理fin,一个动画看懂网络原理之TCP建立和释放过程
  9. Linux系统Debian安装
  10. 2018互联网月饼哪家强?阿里有情怀、腾讯最实在、咪咕最暖萌、联想最简单粗暴......