首页 > 其他分享 >关于在企业中git开发的使用流程及规范

关于在企业中git开发的使用流程及规范

时间:2023-11-14 21:04:06浏览次数:30  
标签:git 流程 规范 feature 开发 hotfix bug 分支

标准的Git开发流程通常包括以下几个主要分支:主分支(main/master)、开发分支(develop)、功能分支(feature)、发布分支(release)、紧急修复分支(hotfix)等。同时,Git规范也有一些通用的最佳实践,可以帮助团队更好地使用Git进行项目管理。

标准的Git开发流程:

  1. 主分支(main/master):
  • 主分支是整个代码库的主要分支,存放随时可供生产环境部署的稳定版本。
  • 通常情况下,主分支只应该包含经过测试并且准备发布到生产环境的代码。
  1. 开发分支(develop):
  • 开发分支是所有功能开发的基础分支,用于集成各个功能的开发成果。
  • 所有的功能开发都应该基于开发分支展开。
  1. 功能分支(feature):
  • 每个新功能的开发都应该在单独的功能分支上进行,以保持代码库的清晰和可维护性。
  • 功能开发完成后,应该将功能分支合并到开发分支(dev)中进行集成测试。
  1. 发布分支(release):
  • 发布分支用于准备发布新版本,进行最后的测试和准备工作。
  • 在发布分支上进行版本号更新、文档更新等操作,直到准备就绪后合并到主分支(main/master)和开发分支(dev)。
  1. 紧急修复分支(hotfix):
  • 当生产环境出现紧急问题需要立即修复时,可以创建紧急修复分支进行处理。
  • 修复完成后,应该将紧急修复分支合并到主分支(main/master)和开发分支(dev)中,确保问题得到彻底解决。

Git规范最佳实践:

在企业开发中,为了更好地利用Git进行项目管理,一般会遵循以下最佳实践:

  1. 提交信息规范化:
  • 提交信息应该清晰、简洁、包含有用的信息,便于快速理解这次提交的内容。
  • 可以遵循类似于Angular规范(feat: 新功能, fix: 修复问题, docs: 文档变更, style: 代码格式变更, refactor: 代码重构, test: 测试代码, chore: 其他修改)的提交信息格式。
  1. 分支管理:
  • 严格遵守分支命名规范,清晰明了地表达分支的作用和内容。
  • 避免直接在主分支上进行开发,通过合并请求(Pull Request)的方式将代码合并到目标分支。
  1. 定期合并与代码审查:
  • 定期将开发分支的代码合并到主分支,确保代码库的整体稳定性。
  • 强制进行代码审查,确保代码质量。
  1. 版本号管理:
  • 使用语义化版本号(Semantic Versioning)规范管理版本号,便于开发者和用户理解版本变化。
  1. 自动化流程:
  • 尽可能实现持续集成(CI)和持续部署(CD),通过自动化流程提高开发效率和代码质量。


如何使用feature分支:

  1. 创建功能分支: 使用Git命令或者版本控制工具,在本地仓库中创建一个新的功能分支,可以使用类似于以下的命令:
git checkout -b feature/new-feature develop

这个命令会在基于develop分支创建一个新的feature/new-feature分支,并切换到这个分支上。

  1. 在功能分支上进行开发: 在新创建的功能分支上进行你的功能开发工作。在这个分支上,你可以添加、修改或删除需要的代码,并测试你的功能。
  2. 提交代码: 当你完成了对功能的开发,你需要将代码提交到你的功能分支上,使用如下命令:
git add .
git commit -m "feat: add new feature"

这个命令会将你的所有改动提交到当前的功能分支中,并附带一条清晰的提交信息说明你做了什么更改。

  1. 定期更新: 如果开发过程比较长,建议定期从develop分支上拉取最新的变更到feature分支,以确保你的新功能基于最新的代码。
git checkout feature/new-feature
git merge develop
  1. 完成新功能: 当新功能开发完成并通过了本地测试后,可以提交你的feature分支,并推送到远程仓库:
  2. 发起Pull Request: 在远程仓库上创建一个Pull Request,请求将你的feature分支合并到develop分支。在Pull Request中描述你新增的功能,并请求团队成员进行审查。
  3. 合并到develop分支: 一旦你的Pull Request 被批准并通过了代码审查,可以将你的feature分支合并到develop分支。
  4. 删除feature分支: 当功能分支的工作完成并且代码已经被合并到develop分支后,可以删除这个feature分支:
git branch -d feature/new-feature

使用feature分支,可以将新功能的开发隔离出来,便于管理和审查,同时也不会影响到主要的开发分支。

如何使用hotfix分支:

  1. 创建hotfix分支: 当在生产环境中发现一个紧急bug需要立即修复时,首先从master分支创建一个新的hotfix分支。可以使用如下命令:
git checkout -b hotfix/bug-fix master

这将在基于master分支创建一个名为hotfix/bug-fix的新分支,并切换到这个分支上。

  1. 进行bug修复: 在hotfix分支上进行紧急bug的修复工作。可以进行代码修改、测试等工作。
  2. 提交代码: 在修复bug的过程中,将代码提交到hotfix分支:
git add .
git commit -m "Fix critical bug"
  1. 完成bug修复: 当紧急bug修复完成并通过了本地测试后,可以提交你的hotfix分支,并推送到远程仓库:
git push origin hotfix/bug-fix
  1. 合并到master和develop分支: 紧急bug修复完成后,需要将hotfix分支的变更合并到master分支,并且也要将这些变更合并到develop分支,以确保将bug修复同步到开发分支上。
git checkout master
git merge hotfix/bug-fix
git checkout develop
git merge hotfix/bug-fix
  1. 发布新版本: 一旦hotfix分支的变更被合并到master分支,可以发布一个新的生产版本,并部署到生产环境中。
  2. 删除hotfix分支: 当bug修复的工作完成后,可以删除这个hotfix分支:
git branch -d hotfix/bug-fix

通过使用hotfix分支,可以快速响应生产环境中的紧急bug,并进行隔离式的修复工作,以确保修复不会干扰正在进行的开发工作。

关于release分支作用和使用:

release分支通常用于准备发布新的产品版本或者进行预发布的准备工作。它的作用包括但不限于以下几点:

  1. 功能完善和测试: 一旦开发团队认为代码已经达到了一个新版本发布的标准,他们就会在release分支上进行最后的功能完善和测试工作。
  2. 预发布准备: 在release分支上可以进行诸如版本号更新、文档编写、编译打包等与发布相关的准备工作。
  3. 隔离开发和发布: 通过使用release分支,可以确保在进行最终的准备工作时不会影响到正在进行的开发工作。release分支允许开发团队在发布准备阶段独立于其他开发工作。
  4. 发布后的维护: 发布后,release分支也可以用于维护发布版本,例如修复发布后发现的小bug或提供紧急的安全补丁。

总之,release分支提供了一个稳定的环境,用于准备新的发布版本,并确保发布前的最终准备工作可以独立于正在进行的开发工作,从而更好地管理软件的发布流程。


打补丁修复:在release分支上打补丁通常是为了修复已发布版本的紧急bug或者提供安全补丁

  1. 切换到release分支: 确保你当前所在的分支是release分支:
git checkout release/1.0.0
  1. 创建并切换到hotfix分支: 在release分支的基础上创建一个新的hotfix分支,并切换到这个分支上:
git checkout -b hotfix/bug-fix

这将在基于release/1.0.0分支创建一个名为hotfix/bug-fix的新分支,并切换到这个分支上。

  1. 进行紧急bug修复: 在hotfix/bug-fix分支上进行紧急bug修复的工作。进行代码修改、测试等工作。
  2. 提交和合并: 完成修复后,将修改提交到hotfix分支并进行合并:
git commit -am "Fixing urgent bug"
git checkout release/1.0.0
git merge hotfix/bug-fix
  1. 发布新版本: 在完成所有必要的修复后,发布新的版本,包括更新版本号、编译打包等发布准备工作。

通过这些步骤,在release分支上打补丁可以确保紧急bug修复的工作与即将发布的版本保持一致,同时也可以避免影响正在进行的其他开发工作。


关于private分支:

私有(private)分支通常用于开发人员个人的工作区。这些分支通常不会被推送到远程仓库,而是用于本地开发和实验。私有分支可以用

在使用私有分支时需要注意以下几点:

  1. 私有分支通常只在本地存在,不会被推送到远程仓库。
  2. 不建议将未经测试的代码直接合并到主要的开发分支或发布分支,应该先在私有分支上进行测试和验证。
  3. 在实际开发中,私有分支可以作为一个安全的实验场所,但要注意及时清理不再需要的私有分支,以免造成混乱和不必要的开销。

private分支是为了让开发人员在不影响主要开发线和发布流程的前提下进行个人实验和开发工作而设计的。

上面的代码示例都基于git命令行使用的,一般在企业中都使用相关的可视化git管理工具,如:小乌龟(TortoiseGit)、Sourcetree等;可视化操作更加的简便,让开发人员专注于开发。

标签:git,流程,规范,feature,开发,hotfix,bug,分支
From: https://blog.51cto.com/u_16280920/8377613

相关文章

  • 自定义 Git Hook
    前言前端同学大概都熟悉husky这个工具,他可以直接在项目中添加githooks,主要解决了githooks不会同步到git仓库的问题,保证了每个开发人员的本地仓库都能执行相同的githooks。但是husky毕竟是一个JS生态的工具,依赖于npm安装和npm的scripthook才能达到最佳效果......
  • Hippo4j 用户体系对接 LDAP 指导流程 及 实现思路
    (目录)Hippo4j用户体系对接LDAPFeature:serveraddLdapuserauthenticationissue:https://github.com/opengoofy/hippo4j/pull/1392Hippo4j接入Ldap指导在application.properties配置文件中,配置下面相关信息:此配置文件示例在同目录下的ldap-back.properties......
  • 11月14日流程控制
    目录流程控制1.单分支的情况2.多分支的情况3.更多分支情况特别点:4.switch方法注意点5.循环1.for循环2.while循环3.do-while循环流程控制也就是if判断。在js中if判读与python一样有多分支、单分支的概念。1.单分支的情况首先是基本格式if(condition){//在条件为真时......
  • JavaWeb--Servlet执行流程&生命周期
    Servlet的执行流程 Servlet生命周期 1、初始化使用了init()方法,只调用一次。2、提供服务使用service()方法(1)、调用时机:servlet被访问时,调用该方法(2)、调用次数:每一次servlet被访问就调用一次 3、服务中止时使用destory()方法,servlet对象被销毁调用时机:内存释放或者服务关闭的......
  • windows ewomail docker搭建流程记录
     一、安装命令dockerrun-d-hmail.dowhere.com--restart=always-p25:25-p109:109-p110:110-p143:143-p465:465-p587:587-p993:993-p995:995-p8182:80-p8181:8080-p13307:3306-vD:/dockercontainer/ewomail/mysql/:/mysql/data/-vD:/dockerconta......
  • Spring Cloud Gateway实现鉴权认证流程总结(一)
    认证、授权、凭证1.1认证(Authentication)认证表示你是谁。系统如何正确分辨出操作用户的真实身份,比如通过输入用户名和密码来辨别身份。1.2授权(Authorization)授权表示你能干什么。系统如何控制一个用户能看到哪些数据和操作哪些功能,也就是具有哪些权限。1.3凭证(Credential)表示你......
  • Spring Cloud Gateway实现鉴权认证流程总结(二)
    微服务认证方案微服务认证方案目前有很多种,每个企业也是大不相同,但是总体分为两类,如下:网关只负责转发请求,认证鉴权交给每个微服务商控制统一在网关层面认证鉴权,微服务只负责业务你们公司目前用的是哪种方案?先来说说第一种方案,有着很大的弊端,如下:代码耦合严重,每个微服务都要......
  • 专业软件检测机构进行性能测试有哪些流程?
    软件性能测试是一种评估软件在不同条件下的性能表现的过程。它旨在验证软件在正常和负载情况下的稳定性、响应时间、吞吐量、可扩展性和资源利用率等性能指标。通过性能测试,我们可以发现潜在的性能问题,并为软件性能的提升提供决策依据。一、专业软件测试机构进行性能测试时......
  • 济南专利申请流程及步骤时间
    济南专利申请流程及步骤时间要取得专利权,需要先进行申请,经过审查以后才能授予专利权。今天乐知网小编就为申请人介绍一下大家比较关心的专利申请流程及各个步骤所用的时间。专利申请流程分为一般流程和加急流程。一般申请流程用时:发明2-3年,实用新型:5-8个月,外观设计:4-7个月。加急流......
  • Android 11 (MTK)状态栏图标反色-->跟随当前应用变化代码流程
    //StatusBar.javapublicvoidstart(){.............onSystemBarAppearanceChanged(mDisplayId,result.mAppearance,result.mAppearanceRegions,result.mNavbarColorManagedByIme);mAppFullscreen=result.mAppFullscreen;......