git分支管理和工作流规范:不同场景细化和演示
https://www.iteye.com/blog/qqtalk-2415889
前两篇介绍了 git基本概念 和 具体的规范,本篇针对不同的使用场景做演示。
分支
分支命名
- master 分支名称保持不变
- develop 分支名称保持不变
- feature/<分支名称> 功能分支
- release/<分支名称> 待上线分支
- hotfix/<分支名称> 线上紧急修复分支
拉取远程分支
git checkout -b <分支名称> origin/<分支名称> 拉取并关联远程分支
创建新分支
git checkout -b <分支名称> 创建新分支并切换到新分支
<!-- more -->
提交备注规范
首行,简明扼要地描述更新内容;
空出一行;
之后,详细描述更新内容。
如果对应jira的问题,填写jira路径:issue:http://jira.n.xiaomi.com/test1
举例
修复bug,工单详情页面,工单记录页面,客服头像不显示
<空行占位符>
导致原因:代码逻辑考虑不全
jira: http://jira.n.xiaomi.com/test1
如何整理自己的commit,保持commit清晰
git commit —amend 修改最近一次提交;
git rebase -i 整理提交
- edit,编辑某一次提交的备注;
- squash,把当前commit向前合并,一直合并到pick为止;
- fixup,和squash非常类似,唯一的区别就是,fixup会忽略当前commit的信息;
再次强调:如果commit已经提交到远程git仓库,一定不要再进行整理合并commit。
举例说明
基于develop分支创建一个功能分支,名称为feature/feature1;
git checkout -b feature/feature1
新建一个文件test.txt,提交;
git commit -m ‘add test.txt file’
修改文件test.txt,添加一行内容,提交;
git commit -m ‘update text.txt file, append content: love vae music’
发现上一步添加的内容错误,想修改内容,但不添加新的commit
修改为正确的内容;git commit —amend; 会弹出修改窗口,修改注释,如果不变,直接回车;
连续提交3个commit,但想合并为1个commit;
使用git log,确定要rebase的commit-id;
git rebase -i df87607d5dd24c0a73f23284e6988d6d32c0d3a4 显示编辑窗口
进行编辑,修改如下:
最终结果只会保留commit1:
新人加入,如何加入开发
从远程拉取develop分支:
git checkout -b <分支名称> origin/<分支名称> 拉取并关联远程分支
如果要开发新功能,基于develop分支创建feature分支:
git checkout -b feature/feature1
如果要修复线上紧急bug,基于master分支创建hotfix分支:
git checkout -b hotfix/hotfix1
开发一个feature
基于develop分支创建feature分支;
开发完成后,整理自己的commit,把无意义的commit进行合并;
准备在下一次迭代上线,整理完成后,合并到develop分支;
不准备在下一次迭代上线,整理完成后,push当前分支到远程git仓库,等待准备上线时,再合并到develop分支:
git push origin feature/feature1:feature/feature1
合并到develop分支前,一定要经过本地测试!
确定版本上线计划及上线
整体上,要有明确的上线计划,确定每次上线哪些功能;
只有确认在下一次版本上线的feature才能合并到develop分支;
提交测试,修复测试反馈的bug
提交测试前,确保所有人的代码修改都已提交到develop分支;
基于develop分支,创建release分支:
git checkout -b release/release1
发布release/release1分支到测试环境,测试人员进行测试;
测试过程中发现的bug,直接在release分支进行修复并提交;
测试完成,确认上线,合并代码到master分支和develop分支,用release分支名打Tag,删除release分支:
git tag release.1.1.1
git branch -d release/release1
修复线上bug
基于master分支,创建hotfix分支
git checkout -b hotfix/hotfix1
修复完成后,finish hotfix,合并代码到master和develop分支;
git分支管理和工作流规范:不同场景细化和演示的更多相关文章
- Git 分支管理和冲突解决
Git 分支管理和冲突解决 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支 ...
- git分支管理和stash
1 创建分支$ git branch 分支名 2切换到分支$ git checkout 分支名 3查看提交git log --oneline --decorate --graph --all 4 轻量 ...
- [git] git 分支管理和工作流程
分支管理 列举本地分支.下面的 * 是 HEAD 所指向的分支,标识当前工作目录所用的分支.其他分支隐藏在 git 仓库中,通过 git checkout 命令才能访问和修改. $ git branc ...
- Git应用—03分支管理和冲突解决(转载)
Git 分支管理和冲突解决 https://www.cnblogs.com/mengdd/p/3585038.html 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. ...
- 关于git-Git 分支管理和冲突解决
创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支,名叫newname. gi ...
- Git commit message和工作流规范
目的 统一团队Git commit日志标准,便于后续代码review,版本发布以及日志自动化生成等等. 统一团队的Git工作流,包括分支使用.tag规范.issue等 Git commit日志参考案例 ...
- 前端规范之Git工作流规范(Husky + Comminilint + Lint-staged)
代码规范是软件开发领域经久不衰的话题,几乎所有工程师在开发过程中都会遇到或思考过这一问题.而随着前端应用的大型化和复杂化,越来越多的前端团队也开始重视代码规范.同样,前段时间,笔者所在的团队也开展了一 ...
- 好代码是管出来的——Git的分支工作流与Pull Request
上一篇文章介绍了常用的版本控制工具以及git的基本用法,从基本用法来看git与其它的版本控制工具好像区别不大,都是对代码新增.提交进行管理,可以查看提交历史.代码差异等功能.但实际上git有一个重量级 ...
- Git版本控制与工作流详解
这篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对git的基本概念和命令不是很熟悉,可以从以下基本教程入手: 专为设计师而写的GitHub快速入门教程 git – 简明指 ...
随机推荐
- LeetCode_001.两数之和
LeetCode_001 LeetCode-001.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标. 你可以假设每种输 ...
- db2缓冲池调优
缓存池: 冲池是内存中的一块区域,db2会将用到数据放到缓冲池中提高性能.缓冲池太小,每次查询仍然要到磁盘中操作,达不到缓冲的效果.缓冲池太大,超出操作系统管理的限制,会导致数据库无法连接的错误. 缓 ...
- 一、Robotframework安装步骤
1.安装python并验证安装成功 a.安装python-2.7.14.amd64------默认路径安装即可 b.添加环境变量path:C:\Python27; C:\Python27\Script ...
- python - socket通信笔记
参考: 通过编写聊天程序来熟悉python中多线程和socket的用法:https://www.cnblogs.com/mingjiatang/p/4905395.html python socket ...
- leetcode 239. 滑动窗口最大值(python)
1. 题目描述 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 示 ...
- 阶段3 1.Mybatis_07.Mybatis的连接池及事务_5 mybatis中使用poolead配置连接的原理分析
idelConnection是空闲的链接 idelConnection就是ArrayList的数组 如果没有空闲的就new一个 新的connection 一个空闲池,一个活动的池,一个链接过来.空闲池 ...
- python学习笔记:(五)列表与元组的异同
在python中最基本的数据结构是序列(sequence),每一个元素被分配一个序号,即元素的位置,也称为索引,第一个索引是0,第二个则是1 元组与列表最大的区别就是: 元组不能更改:列表可以修改 p ...
- 2018.03.27 pandas duplicated 和 replace 使用
#.duplicated / .replace import numpy as np import pandas as pd s = pd.Series([1,1,1,1,1,2,3,3,3,4,4, ...
- Call to undefined method app\models\User::find() yii2-admin
这个问题可能大家遇到的不多. 分析原因 问题出在 config/web.php 这个配置文件里面 'components' => [ ..... 'user' => [ 'identity ...
- Scratch少儿编程系列:(三)第一个例子 潜水员
一. 选择背景 在上一节系统界面的介绍中,选择"6角色"的左边,点击"从背景库中选择背景". 选择主题水下中的"underwater3". ...