这时我参与第三届青训营-后端场笔记创作活动的第一篇笔记
作者
chenxuan
分支策略
-
master主分支,用于生产环境的主分支
-
test分支,用于测试环境分支,一般可以自动CICD
-
fix/* 分支,用于修补线上bug分支
-
feat/* 分支,用于开发功能分支
-
refactor/* 分支,用于重构代码
三大环境
-
生产环境
用于部署成品的环境,master分支
-
测试环境
用于部署测试,test分支
-
开发环境
用于本地进行测试,一般需要连接公司VPN开发
开发流程
-
git clone remote-url 克隆仓库
-
拉取最新代码
-
git fetch origin master:master 不在master
-
git pull origin master 在master
-
-
开发
-
创建新分支
-
git checkout -b feat/xxx master 开发新功能
-
git checkout -b fix/xxx master 修补bug
-
git checkout -b refactor/xxx master 重构
-
-
推送新分支
- git push origin xxx
-
合并到test分支
前提是在开发环境测试没有问题
-
git fetch origin test:test
-
git checkout test
-
git merge xxx(自己的分支)
-
没有冲突
- git push 推送分支
-
产生冲突
-
git checkout -b merge/xxx test
解决冲突问题
-
git merge xxx
-
git push origin xxx
-
继续向test合并
-
删除分支
git push origin :xxx
git branch -d xxx
-
-
-
-
提出master的merge request
前提是在测试环境没有问题
-
产生冲突和test解决方式类似
-
review没有问题,合并分支到master,结束开发
-
review出问题
- 继续修改代码,解决问题再次请求合并
-
-
-
开发完毕,删除分支
-
git push origin :xxx(远程分支名字)
-
git branch -d xxx(本地分支名字)
-
注意事项
-
提交merge request前必须经过测试环境检验
-
test分支代码不能合并到master分支
-
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
界面
-
出现四个窗口
-
从左到右分别为
-
当前分支内容local
-
两个分支共同祖先内容base
-
要合并分支内容remote
-
-
下面为修改的窗口
修改
-
直接修改
-
命令修改
: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只拉取不会自动设置跟踪