前端GIT规范
1 分支规范
master | 主分支 |
---|---|
dev | 主开发分支 |
hotfix | 修复bug分支 |
feature | 功能开发分支 |
1.1 主分支master
-
master分支永远受保护。不可在master分支上开发,进行commit,push操作。
-
master分支只接收merge操作。
-
每次发布正式上线的稳定版本(发布后第一天),将当前发布版本merge到master分支。
-
master分支的代码永远和线上代码保持同步。
1.2 主开发分支dev
- dev分支为主开发分支。可以进行commit,push,merge操作。
- 一般不在dev分支上进行新功能的开发。dev分支用来做不同分支的代码整合。
- 每次master发布以后,需要把master的代码merge到dev上。保持比master的代码更新。
1.3 hotfix分支 hotfix/xxxx
- hotfix分支是由master分支checkout出来,用于热修复线上bug用。可以进行commit,push,merge操作。
- 修复完毕经验证后直接发布。发布完成后merge到master分支。
1.4 功能开发分支 feature/xxxx
- 用来进行新功能开发的分支。此分支由dev分支checkout出来,可以进行commit,push,merge操作。
- 按照功能或者版本可以同时checkout多个feature分支并行开发。开发完毕统一merge回dev。
2 工作流程
2.1 新功能开发
- 从dev分支checkout开发分支,如feature/new。
- 开发完成后提交测试。测试通过后由发布负责人(一般为团队leader)修改package.json上的版本号,填写changelog。
- 正式发布完成后,由发布负责人把发布的版本merge到master分支。
- 最后把master分支merge到dev分支。
2.2 hotfix热修复
- 从master分支checkout热修复分支,如hotfix/newbug。
- 修复完成后提交测试。测试通过后由发布负责人(一般为团队leader)修改package.json上的版本号,填写changelog。
- 正式发布完成后,由发布负责人把hotfix的merge到master分支。
- 最后把master分支merge到dev分支。
2.3 并行开发
- 从dev分支checkout多个并行开发的分支,如feature/new1,feature/new2,feature/new3...。
- 开发完成后由发布负责人(一般为团队leader)将并行开发的分支统计后统一合并到dev或者一个新的feature分支上。(主要看短期内是否有多次发布排期)
- 提交测试。测试通过后由发布负责人修改package.json上的版本号,填写changelog。
- 正式发布完成后,由发布负责人把发布的版本merge到master分支。
- 最后把master分支merge到dev分支。
3 注意点
- 只要发布到正式环境,不管改动多少,每次都必须版本号变动,同时changelog留下记录。
- 每次发布到正式环境后一定要记得同步代码回dev。
- 除了master,dev这三个分支类型外的所有分支都是临时分支。可以适当保留1-2个版本的分支后删除其他分支。
- 养成良好的习惯,每次开发前,提交代码前先同步代码。
4 GIT的相关知识点提炼
4.1 GIT的常用操作
操作 | 描述 | 说明 |
---|---|---|
git pull | 拉取并合并代码 | fetch,diff和merge的语法糖,由于会自动执行merge,很容易导致冲突了也没注意到,不推荐 |
git fetch origin xxx | 拉取远端代码但不合并 | 推荐 |
git merge origin/xxx | 合并代码到当前分支 | 推荐 |
git status -s | 查看有变动的文件列表 | |
git branch | 查看所有本地分支 | |
git branch -a | 查看本地和远程分支 | |
git branch -d xxx | 删除本地xxx分支 | 必须不在xxx分支上才能删除 |
git checkout xxx | 切换到xxx分支上 | xxx分支必须存在 |
git checkout -b xxx | 新建xxx本地分支并切换到xxx分支上 | xxx分支必须不存在 |
git add . | 提交所有本地工作区的改动到本地暂存区 | |
git commit -m '注释' | 提交本地暂存区到对应本地分支上 | |
git push | 将本地分支上的代码推送到远端分支上 | |
git log | 查看当前分支上的commit记录 | |
git reset --hard xxxx | 回复本地版本到xxxx(git log查到的commit记录hash号) |