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。

举例说明

  1. 基于develop分支创建一个功能分支,名称为feature/feature1;

    git checkout -b feature/feature1

  2. 新建一个文件test.txt,提交;

    git commit -m ‘add test.txt file’

  3. 修改文件test.txt,添加一行内容,提交;

    git commit -m ‘update text.txt file, append content: love vae music’

  4. 发现上一步添加的内容错误,想修改内容,但不添加新的commit
    修改为正确的内容;

    git commit —amend; 会弹出修改窗口,修改注释,如果不变,直接回车;

  5. 连续提交3个commit,但想合并为1个commit;

  6. 使用git log,确定要rebase的commit-id;

  7. git rebase -i df87607d5dd24c0a73f23284e6988d6d32c0d3a4 显示编辑窗口

  8. 进行编辑,修改如下:

  9. 最终结果只会保留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分支管理和工作流规范:不同场景细化和演示的更多相关文章

  1. Git 分支管理和冲突解决

    Git 分支管理和冲突解决 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支 ...

  2. git分支管理和stash

    1 创建分支$ git branch 分支名 2切换到分支$ git checkout 分支名 3查看提交git log --oneline --decorate --graph --all 4 轻量 ...

  3. [git] git 分支管理和工作流程

    分支管理 列举本地分支.下面的 * 是 HEAD 所指向的分支,标识当前工作目录所用的分支.其他分支隐藏在 git 仓库中,通过 git checkout 命令才能访问和修改. $ git branc ...

  4. Git应用—03分支管理和冲突解决(转载)

    Git 分支管理和冲突解决 https://www.cnblogs.com/mengdd/p/3585038.html 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. ...

  5. 关于git-Git 分支管理和冲突解决

    创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支,名叫newname. gi ...

  6. Git commit message和工作流规范

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

  7. 前端规范之Git工作流规范(Husky + Comminilint + Lint-staged)

    代码规范是软件开发领域经久不衰的话题,几乎所有工程师在开发过程中都会遇到或思考过这一问题.而随着前端应用的大型化和复杂化,越来越多的前端团队也开始重视代码规范.同样,前段时间,笔者所在的团队也开展了一 ...

  8. 好代码是管出来的——Git的分支工作流与Pull Request

    上一篇文章介绍了常用的版本控制工具以及git的基本用法,从基本用法来看git与其它的版本控制工具好像区别不大,都是对代码新增.提交进行管理,可以查看提交历史.代码差异等功能.但实际上git有一个重量级 ...

  9. Git版本控制与工作流详解

    这篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对git的基本概念和命令不是很熟悉,可以从以下基本教程入手: 专为设计师而写的GitHub快速入门教程 git – 简明指 ...

随机推荐

  1. htonl(),htons(),ntohl(),ntons()--大小端模式转换函数

    不同机器内部对变量的字节存储顺序不同,有的采用大端模式(big-endian),有的采用小端模式(little-endian). 大端模式是指高字节数据存放在低地址处,低字节数据放在高地址处. 小端模 ...

  2. 生成base64位图片验证码

    import org.springframework.util.Base64Utils; import javax.imageio.ImageIO; import java.awt.*; import ...

  3. 简要介绍一下MD5加密的书写

    大家应该多清楚数据的重要性,可以假设一下:一个非常大的企业,因为一个程序员的疏忽大意,没有使用MD5加密,那么可以说这个企业的数据库是非常不安全的,可以轻而易举的的访问你的数据库,并执行任何操作. 下 ...

  4. springboot 使用外置tomcat启动

    pom.xml  如下 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  5. java8 查找字符串中首次出现2次的字母

    利用java8的stream函数式编程进行处理 1.实现字母分离 map将整个字符串当成一个单词流来处理 Map<String[], Long> collect14 = Stream.of ...

  6. Unity UI —Text

    Character Text 文本字体的编辑 Font Style 字体格式可以自行下载也可在windows自带字体中查找 Font Size 字体尺寸 Line Spacing 行距 Rich Te ...

  7. Excel表格数据导入MySQL数据库

    有时候项目需要将存在表格中的批量数据导入数据库,最近自己正好碰到了,总结一下: 1.将excel表格另存为.csv格式文件,excel本身的.xlsx格式导入时可能会报错,为了避免不必要的格式错误,直 ...

  8. 【MM系列】SAP MM模块-MIGO收货后自动打印收货单

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-MIGO收货后自动 ...

  9. 第十四周总结 Io之文件流

    I/O相关 输入/输出 流(数据流动) 数据流动的方向 读数据(输入input) 写数据(输出output) 文件流 字符流 数据流 对象流 网络流.... 1.什么叫文件 一种电脑的存储方式 文件有 ...

  10. SSIS包定时执行

    企业管理器 --管理 --SQL Server代理 --右键作业 --新建作业 --"常规"项中输入作业名称 --"步骤"项 --新建 --"步骤名& ...