前端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号)