Git操作规范(个人见解)

简介: Git操作规范(个人见解),每个公司都要有规矩,才能保证稳定的运行,所以,代码提交也要有规矩,不是吗

一、主要分支介绍


master:正式版本;线上运行版本;

dev:最新的下次发布状态,包含测试中的新功能,可能存在bug;

feature:该分支一般用来表示开发新功能;一般情况下feature生命周期不超过一周。

bugfix:该分支主要用于修补master分支上出现的问题,即线上突发问题。

二、常用操作步骤


1. 开发新功能

  1. 基于dev分支创建一个新的feature分支,在feature分支上进行开发
  2. 开发完成后,合并featrue分支到dev分支上,测试人员开始测试。
* 此处合并feature到dev分支上,建议提交 Pull Request 并指定reviews进行Code Review后,使用Github平台能力进行合并
* Code Review的原则:主要review代码规范,业务逻辑次要
  1. 测试完成后,合并dev分支到master分支,并删除feature分支。
* 向master分支合并代码,原则上必须有Teambition对应的迭代版本号;
* 向master分支合并代码,添加标签,例如[Ver1.1.1.5 登录功能改造]
* 向master分支合并代码,依然建议采用 Pull Request 的形式,而不是直接分支合并的方式。

2. 修复线上BUG

  1. 基于master分支创建bugfix分支,在bugfix分支上排查并修复bug;
  2. 修复完成后,合并bugfix到master分支上,开始测试;
* 若此时dev和master完全一致,则先合并到dev分支验证无误后合并到master
* 若此时dev有更超前的功能在验证中,为了避免因为修复bug而把其他暂不需要上线或暂不满足上线条件的功能一起上线,
  因此bugfix直接合并到master分支,通过本地模拟或正式环境验证等方式,进行测试
  1. 测试无误后,dev拉取master代码,修复dev上的同个问题,继续其他功能开发,最终删除bugfix分支。

3. 合并冲突

  1. feature合并到dev遇到冲突时,首先将dev合并到本地feature分支
* Github平台执行Pull Request时,会先检测是否满足合并条件,若有冲突也会给予提醒
* 该冲突产生的原因大概率为:其他开发人员更早地提交了其他feature功能,且两者都存在对共同文件的修改。
  1. 在本地将冲突文件人工合并后,再次提交解决冲突后的文件(此时该文件已包含该feature最新功能和dev最新功能)
  2. 此时feature已满足合并dev的条件(Pull Request中也会显示为绿色按钮可合并)

三、实操

约有三种方式执行上述流程,推荐指数为 3 > 2 > 1


1. 人工操作

  • 创建feature和bugfix分支均为人工命名、人工创建。
  • 从dev和master向下合并均人为控制合并
  • 向dev和master合并均采用Pull Request形式

2. git-flow命令行

Mac系统安装git-flow
brew install git-flow

//先将远程仓库克隆到本地。
git clone <project_url>

//初始化Gitflow配置
git flow init

//新功能开始开发前,需准备好开发分支。
git flow feature start <feature_name>
实质上等价于 git checkout -b feature/<feature_name> develop

在本地开发完成新功能并commit后,需要将本地代码push到远程仓库。
git flow feature publish <feature_name>
如果已经执行过publish后又有新的代码需push,再次执行将报错,因为它始终会试图创建一个远程分支。
此时需执行正常的push命令git push origin

当功能开发完毕后就将进入测试阶段,此时需将一个或多个feature分支统一合并到develop分支。
git flow feature finish <feature_name>
这行指令做了三件事。
①切换到develop分支;②合并代码到develop分支;③删除本地feature/<feature_name>分支。
此步骤也可采用人工提交Pull Request的方式执行,便于Code Review

3. SourceTree可视化工具

此种方式最为推荐,操作简单明了。

  1. 初始化仓库,顶部菜单栏仓库,选择git flow

  1. 开发新功能 / 修复Bug

  1. 完成功能开发

  1. 发布release版本

四、其他规范


  1. 原则上,禁止在dev分支和master分支上直接修改代码;
  2. feature 分支命名一般为 功能名称,此处约定为feature/功能姓名日期,例如feature/login_xt_20210130
  3. commit message尽可能通俗地描述功能,不允许出现过于简短或无意义的描述,例如”update”、“部分更新”、”暂时提交”等。

五、待改善方面


  1. release分支的使用,目前dev担任了测试版本和发布版本的2个角色。
  2. fork的形式,为了避免多人对主仓库的直接操作,每个开发人员可将主仓库fork到个人仓库一份,然后将单独将主仓库添加为源。(此时该仓库拥有2个源),主仓库源只能向下拉取,向主仓库合并代码采用Pull Request形式。
  3. 标签签名的使用,即为标签添加详细的修改内容介绍,类似备注信息。

六、参考资料


https://github.com/petervanderdoes/gitflow-avh

git-flow 备忘清单

Gitflow 使用最强指北

GitHub Flow & Git Flow 基于Git 的两种协作开发模式 - sloong - 博客园

目录
相关文章
|
2天前
|
人工智能 缓存 开发工具
结合企业实践来规范你的Git commit(含插件使用指南)
结合企业实践来规范你的Git commit(含插件使用指南)
结合企业实践来规范你的Git commit(含插件使用指南)
|
2天前
|
开发工具 git
记IDEA Git版本回退并push到远程操作
记IDEA Git版本回退并push到远程操作
31 1
记IDEA Git版本回退并push到远程操作
|
2天前
|
开发工具 git 开发者
|
2天前
|
开发工具 git
web后端-IDEA的Git操作
web后端-IDEA的Git操作
|
2天前
|
开发工具 git 开发者
【专栏】探讨了 Git 中的 `git rebase` 操作,它用于重新应用提交到另一分支,改变历史顺序
【4月更文挑战第29天】本文探讨了 Git 中的 `git rebase` 操作,它用于重新应用提交到另一分支,改变历史顺序。与 `git merge` 不同,rebase 重写提交历史,提供简洁线性的历史记录。文章介绍了 rebase 的基本操作、应用场景,如整理提交历史、解决冲突和整合分支,并强调了使用注意事项,如避免在公共分支上操作。尽管 rebase 可以带来整洁的历史和冲突解决便利,但其潜在的风险和可能导致的历史混乱需谨慎对待。理解并恰当使用 `git rebase` 可以提升开发效率和代码质量。
|
2天前
|
Linux 开发工具 git
还不会 Git 子模块操作?一文教你学会 git submodule 的增、删、改、查!
还不会 Git 子模块操作?一文教你学会 git submodule 的增、删、改、查!
|
2天前
|
开发工具 git
|
2天前
|
弹性计算 开发工具 git
如何创建符合计算巢规范的Git仓库
为了简化软件云化部署,阿里云计算巢提供了一站式平台,开发者仅需将自己的git仓库配置为符合计算巢服务规范,即可实现自动化部署到云端。官方提供了多个模板,涵盖不同架构和部署物类型,便于开发者从计算巢官方仓库fork并定制。重要文件包含config.yaml和,用于配置服务构建参数。通过计算巢控制台,即可完成服务的创建和发布,实现软件的云上部署。
|
2天前
|
存储 持续交付 开发工具
Git操作入门
Git是一个的开源分布式版本控制系统,它已经被广泛应用于软件开发、文档管理、代码托管等领域,成为当今最流行的版本控制系统之一。Git通过高效地管理文件的变化,使得团队协作更加高效,错误率更低。本文将介绍Git的工作原理、基本命令和常见用法等内容。
23 0
Git操作入门