分支管理
git仓库维护着团队多人开发的多条分支,不团的公司有不同的分支管理方式,这里以一种较为广泛的应用方式进行分析。
分支分为:
- online 分支:在线分支,线上最稳定可运行的版本
- dev 分支:开发分支,所有的人的分支merge到dev分支,测试可用后merge到online
- bug 分支:bug分支,如果dev上有bug时切成bug分支开发修复
- f_name_subProject 分支: 最好有特殊的命名方式。每个人开发新特性分支
- b_name_subProject 分支:每个人修复bug的分支
每个人在自己的分支上进行开发,dev,online代码由专人管理。
提交管理
提交步骤:
- git add chgfile
- git diff HEAD^ </br> 查看本地与远程代码的差异
- git commit -m "comment"
- git push origin xxx分支名
commit 的格式:有兴趣可查看 angular 规范
type: subject [空格] [body]
type
- feat: 新功能
- upd: 更新某功能(不是 feat, 不是 fix)
- fix: bug 修复
- doc: 文档改动
- style: 代码格式更改(不影响代码运行的变动)
- chore: 构建工具或辅助工具改动
- refactor: 重构(不是 feat, 不是 fix, 不是 upd)
例子:(注意分号)
- git commit -m 'feat: 增加 xxx 功能'
- git commit -m 'bug: 修复 xxx 功能 </br> bug的详细描述,或者解决方法'
冲突处理:
- 本地拉取最新的分支
- 本地处理冲突
- 提交冲突到新的分支,取特殊命名:c_name_subProject
- 提交合并请求
代码回滚:
- git log/reflog 查看历史提交
- git reset option(一般为--hard) commitID 回滚
merge管理
所谓的merge就是将不同分支的代码进行合并,merge一般有权限要求,需要向管理员发起申请。merge冲突问题,在上面的提交中已经谈到。
merge还有一步是可以自查的步骤,这时候一定要认真看看自己的代码是不是和预期的一样,避免不必要的低级错误给团队开发带来麻烦。
codereview
说白了,就是看别人的代码。看看哪里有错哪里有值得借鉴的地方。可以在git线上发起分支间的review,发现差异,定位修改,快速学习。
gitlab ci && gitlab runner
GitLab Continuous Integration: gitlab持续集成
官网释义:GitLab has integrated CI/CD pipelines to build, test, deploy, and monitor your code
gitlab runner 是在本地搭建一个运行主机,运行Gitlab CI 指定的功能。
使用方法:
-
1.本地安装 gitlab runner
-
2.远程注册 gitlab CI
-
3.编写.gitlab-ci.yml,并且提交到远程online分支(保证后面大家都有)
示例# 执行前后的提示信息 before_script: - echo 'runner begin' after_script: - echo 'runner end' #增加任务 php-PSR2-check: tags: # 指定使用标签的runner运行该任务 - vipx-runner script: - sh xx/xx/xx/runner # 运行本地runner 脚本 only: # 提交代码的时候检测 - pushes
-
编写本地runer script
示例-一个php语法检测的脚本.需提前安装PHP_CodeSniffer工具#!bin/sh PHPCS=/xxx/xxx/xxx/gitlab-runner/PHP_CodeSniffer/bin/phpcs #FILES=/home/apple/vipx/gitlab-runner/* #FILES=$(git dii HEAD online --stat) FILES=$(git diff origin/online --stat) EXIT_CODE=0 if [ "$FILES" == "" ] then exit $EXIT_CODE fi for FILE in $FILES do echo "$FILE" | grep -q "\.php" REV=$? if [ "$REV" -eq "0" ] then $PHPCS --standard=PSR2 -v -n $FILE if [ $? -ne 0 ]; then EXIT_CODE=1 fi fi done exit $EXIT_CODE
网友评论