一直以来公司都是svn来进行版本控制,虽然svn的版本控制也可以说满足公司的日常需求,但是作为使用git的人来说,我真的裂墙安利git。
无论是版本控制,分支管理,还是存储都更加合理,更加快速。
为了以后升职加薪,为了早日实现git称霸天下的梦想,为了世界和平,我要琢磨一篇git工作流程,以备不时之需。
image.png希望解决的问题
- 目前的开发都是在主分支上,没有分支的概念之说,容易造成冲突!!!
- 没有代码review的机制
- 每当开发同一个产品的另外版本的时候,只能重新复制一个出来,无法统一管理
工作流程思考
分支管理:每一个项目都要创建test
, develop
分支。
master
是生产环境,当完成日常的feature开发,可以merge到master分支
test
分支上的代码用于日常测试,可能会存在bug
develop
是代码已经测试并且已经部署到开发调试环境
- 新创建个分支。
如果是新的开发需求
分支命名为开发人员-feat-模块名字
,如git checkout -b may-feat-login
如果是修改bug,分支命名为开发人员-fix-模块名字
,如git checkout -b may-fix-may-fix-login - 修改代码,提交代码
git commit
调出编辑器,写多行信息
<type>(<scope>): <subject> // 必须
type: 提交类别
feat
:新功能(feature)
fix
:修补bug/ docs:文档(documentation)
style
: 格式(不影响代码运行的变动)
refactor
:重构(即不是新增功能,也不是修改bug的代码变动)
test
:增加测试
chore
:构建过程或辅助工具的变动
也可以配合工具
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 下的问题
-
code reivew
目前主流的code review 工具 Phabricator
在commit中引入code review
的机制,如果无法通过审核,需要重新修改代码,继续提交。直到通过提交
最后再git push
-
合并分支,将自己的产出
may-feat-login
分支的代码合并到master分支,再删除分支
git checkout master // 切换到master分支
git rebase may-feat-login
// 如果遇到冲突,解决冲突
git add . // 解决冲突的代码重新加入缓存
git rebase --continue
git checkout -d may-feat-login // 删除分支
- 当遇到产品其他版本的开发的时候
比如遇到产品专门为ios 手机定制的一块新功能的时候
创建新分支,命名为 master-ios
git checkout -b master-ios
- 当有其他通用的内容需要在多个版本代码修改的时候,
比如对分支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
网友评论