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

mergerebase
自动创建一个新的commit。如果合并的时候遇到冲突,仅需要修改后重新commit
✅优点:记录了真实的commit情况,包括每个分支的详情
✅缺点:因为每次merge会自动产生一个merge commit,所以在使用一些git 的GUI tools,特别是commit比较频繁时,看到分支很杂乱。
注 意 : 只 有 在 冲 突 的 时 候 , 解 决 完 冲 突 才 会 自 动 产 生 一 个 c o m m i t 。 \color{red}{注意:只有在冲突的时候,解决完冲突才会自动产生一个commit。} commit
俗称变基,变基是什么? 找公共祖先
执行rebase后,提交会被移除,并且 feature 分支被重置到 master 分支,feature 分支上的提交被重新应用到 master。差别在于这些重新应用的提交是原始的副本,它们的 SHA-1 值和原来的提交不一样。如果遇到冲突需要执行一下三步解决:
• 修改冲突部分
• git add
• git rebase --continue
✅优点:得到更简洁的项目历史,去掉了merge commit
✅缺点:如果合并出现代码问题不容易定位,因为re-write了history
在这里插入图片描述https://cdn.nlark.com/yuque/0/2020/gif/1530561/1596597558096-aefbb062-e9aa-45a0-b1d0-01ac3771fe30.gif
上游分支合并下游分支内容时下游分支更新上游分支内容时

https://upload-images.jianshu.io/upload_images/6081878-f7c90a58674a5584.png?imageMogr2/auto-orient/strip|imageView2/2/w/895/format/webp

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、疑难问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值