git的工作流程思考

一直以来公司都是svn来进行版本控制,虽然svn的版本控制也可以说满足公司的日常需求,但是作为使用git的人来说,我真的裂墙安利git。

无论是版本控制,分支管理,还是存储都更加合理,更加快速。

为了以后升职加薪,为了早日实现git称霸天下的梦想,为了世界和平,我要琢磨一篇git工作流程,以备不时之需。

image.png

希望解决的问题

  1. 目前的开发都是在主分支上,没有分支的概念之说,容易造成冲突!!!
  2. 没有代码review的机制
  3. 每当开发同一个产品的另外版本的时候,只能重新复制一个出来,无法统一管理

工作流程思考

分支管理:每一个项目都要创建test, develop分支。

master 是生产环境,当完成日常的feature开发,可以merge到master分支
test分支上的代码用于日常测试,可能会存在bug
develop是代码已经测试并且已经部署到开发调试环境

  1. 新创建个分支。
    如果是新的开发需求分支命名为 开发人员-feat-模块名字,如git checkout -b may-feat-login
    如果是修改bug,分支命名为开发人员-fix-模块名字,如git checkout -b may-fix-may-fix-login
  2. 修改代码,提交代码
    git commit调出编辑器,写多行信息
<type>(<scope>): <subject> // 必须

type: 提交类别
feat:新功能(feature)
fix:修补bug/ docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动

image.png

也可以配合工具 Commit message

npm install -g commitizen  // 安装
commitizen init cz-conventional-changelog --save --save-exact // 项目里运行
git commit 换成 git cz

为了commit的规范,自己也搜索了一圈,发现很多人在提交的时候使用Emoji标签,也是非常棒的
emoji emoji 代码 commit 说明
🎉 (庆祝) :tada: 初次提交
✨ (火花) :sparkles: 引入新功能
🔖 (书签) :bookmark: 发行/版本标签
🐛 (bug) :bug: 修复 bug
🚑 (急救车) :ambulance: 重要补丁
🌐 (地球) :globe_with_meridians: 国际化与本地化
💄 (口红) :lipstick: 更新 UI 和样式文件
🚨 (警车灯) :rotating_light: 移除 linter 警告
🔧 (扳手) :wrench: 修改配置文件
➕ (加号) :heavy_plus_sign: 增加一个依赖
➖ (减号) :heavy_minus_sign: 减少一个依赖
⬆️ (上升箭头) :arrow_up: 升级依赖
⬇️ (下降箭头) :arrow_down: 降级依赖
⚡️ (闪电)
🐎 (赛马) :zap:
:racehorse: 提升性能
📈 (上升趋势图) :chart_with_upwards_trend: 添加分析或跟踪代码
🚀 (火箭) :rocket: 部署功能
✅ (白色复选框) :white_check_mark: 增加测试
📝 (备忘录) :memo: 撰写文档
🔨 (锤子) :hammer: 重大重构
🎨 (调色板) :art: 改进代码结构/代码格式
🔥 (火焰) :fire: 移除代码或文件
✏️ (铅笔) :pencil2: 修复 typo
🚧 (施工) :construction: 工作进行中
👷 (工人) :construction_worker: 添加 CI 构建系统
💚 (绿心) :green_heart: 修复 CI 构建问题
🔒 (锁) :lock: 修复安全问题
🐳 (鲸鱼) :whale: Docker 相关工作
🍎 (苹果) :apple: 修复 macOS 下的问题
🐧 (企鹅) :penguin: 修复 Linux 下的问题
🏁 (旗帜) :checked_flag: 修复 Windows 下的问题

  1. code reivew
    目前主流的code review 工具 Phabricator
    在commit中引入code review的机制,如果无法通过审核,需要重新修改代码,继续提交。直到通过提交
    最后再 git push

  2. 合并分支,将自己的产出may-feat-login分支的代码合并到master分支,再删除分支

git checkout master // 切换到master分支
git rebase may-feat-login  
// 如果遇到冲突,解决冲突
git add . // 解决冲突的代码重新加入缓存
git rebase  --continue 
git checkout -d may-feat-login // 删除分支
  1. 当遇到产品其他版本的开发的时候
    比如遇到产品专门为ios 手机定制的一块新功能的时候
    创建新分支,命名为 master-ios
git checkout -b master-ios
  1. 当有其他通用的内容需要在多个版本代码修改的时候,
    比如对分支 may-feat-dateTime的功能,需求在master 和 master-ios上都能更新到
git checkout master
git rebase may-feat-dateTime
// 解决冲突
git rebase  --continue 

git checkout master-ios
git rebase may-feat-dateTime
// 解决冲突
git rebase  --continue 

参考内容

Commit message 和 Change log 编写指南
Code Review 工具推荐 | Lifecycle

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Git 规范 所有使用了本规范的项目,必须严格规范操作,否则不予以合并代码、提测、打包上线等后续操作。 基本要求 ...
    zgsddzwj阅读 13,865评论 1 14
  • 多种多样的工作流使得在项目中实施Git时变得难以选择。这份教程提供了一个出发点,调查企业团队最常见的Git工作流。...
    JSErik阅读 4,509评论 2 8
  • 一、Git学习总结的命名 初始化一个Git仓库。 添加文件到Git仓库步骤分两步:使用命令git add <fil...
    Cheriez阅读 472评论 0 1
  • 以前看心理学的书,一直觉得心理学是关于每个个体的私事。《巨婴国》是我接触到的第一本从心理学的视角来看待和分析中国社...
    浮小福阅读 581评论 1 0
  • 晶莹剔透熠熠明,花瓣飘零落地轻。 光彩斑斓春意闹,灯花璀璨满天星。
    花缘澄子阅读 389评论 0 2