Git 项目开发规范| 青训营笔记

226 阅读2分钟

这时我参与第三届青训营-后端场笔记创作活动的第一篇笔记

作者

chenxuan

分支策略

  1. master主分支,用于生产环境的主分支

  2. test分支,用于测试环境分支,一般可以自动CICD

  3. fix/* 分支,用于修补线上bug分支

  4. feat/* 分支,用于开发功能分支

  5. refactor/* 分支,用于重构代码

三大环境

  1. 生产环境

    用于部署成品的环境,master分支

  2. 测试环境

    用于部署测试,test分支

  3. 开发环境

    用于本地进行测试,一般需要连接公司VPN开发

开发流程

  1. git clone remote-url 克隆仓库

  2. 拉取最新代码

    • git fetch origin master:master 不在master

    • git pull origin master 在master

  3. 开发

    1. 创建新分支

      • git checkout -b feat/xxx master 开发新功能

      • git checkout -b fix/xxx master 修补bug

      • git checkout -b refactor/xxx master 重构

    2. 推送新分支

      • git push origin xxx
    3. 合并到test分支

      前提是在开发环境测试没有问题

      1. git fetch origin test:test

      2. git checkout test

      3. git merge xxx(自己的分支)

        • 没有冲突

          1. git push 推送分支
        • 产生冲突

          1. git checkout -b merge/xxx test

            解决冲突问题

          2. git merge xxx

          3. git push origin xxx

          4. 继续向test合并

          5. 删除分支

            git push origin :xxx

            git branch -d xxx

    4. 提出master的merge request

      前提是在测试环境没有问题

      • 产生冲突和test解决方式类似

      • review没有问题,合并分支到master,结束开发

      • review出问题

        1. 继续修改代码,解决问题再次请求合并
  4. 开发完毕,删除分支

    1. git push origin :xxx(远程分支名字)

    2. git branch -d xxx(本地分支名字)

注意事项

  1. 提交merge request前必须经过测试环境检验

  2. test分支代码不能合并到master分支

  3. test分支可以直接合并,master分支必须经过审核


Git 冲突解决vimdiff

配置

git config merge.tool vimdiff  # 指定vimdiff作为默认mergetool
git config merge.conflictsytle diff3  # 设定mergetool风格
git config mergetool.prompt false  # 取消打开文件时的warning显示
  • 此为本地配置,若要全局配置加上--global

使用

  • git mergetool

界面

  1. 出现四个窗口

  2. 从左到右分别为

    1. 当前分支内容local

    2. 两个分支共同祖先内容base

    3. 要合并分支内容remote

  3. 下面为修改的窗口

修改

  1. 直接修改

  2. 命令修改

:diffg RE  " get from REMOTE
:diffg BA  " get from BASE
:diffg LO  " get from LOCAL

退出

  • :wqa 如果还有文件会继续自动打开下一个

Git拉取并跟踪远程分支方法

  • git checkout -b xxx:xxx
  • git fetch xxx:xxx

fetch只拉取不会自动设置跟踪