全网:项目推进与GitLab分支管理规范(参考)

本文详述了Git在项目开发中的应用,包括master、dev、release和feature分支的管理,以及代码版本管理和冲突解决流程。同时介绍了敏捷开发过程,从需求分析到维护的每个阶段,确保代码质量与项目进度。
摘要由CSDN通过智能技术生成

master分支

只存线上的代码,只有确定可以上线时的才合并到master上,并且在master的基础上打Tag。

develop分支,简称dev

初次创建dev时,需要从某个版本的master分支拉取,保持开发时本地代码和线上最新的代码相同。dev分支是在开发时的最终分支,具有所有当前版本需要上线的所有功能。

release分支

a、当dev分支已经有了本次上线的所有代码的时候,并且以通过全部测试的时候,可以从dev分支创建release分支了,release分支是为发布新的产品版本而设计的。
b、通过在release分支上进行这些工作可以让dev分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。
c、在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等等)。
d、比如,此次1.0版本所有的功能版本都已经合并到了dev上,并且所有测试都已经通过了测试,那我就创建新的release分支release/v1.0。切换到新分支,修改最新的版本号等,不允许大的更改。

feature分支

a、用于开发功能的分支,必须从最新的dev分支拉取代码。分支命名基本上是feature/FunctionName。
b、不强制提交到远程仓库,可以本地创建。
c、比如,我要开发登录功能,我从dev分支的最新代码创建新分支命名为feature/login,然后切换到这个新分支开始开发。开发完成后,测试差不多完成,合并到dev分支。

hotfix分支

a、当线上出现bug需要紧急修复时,从当前master分支派生hotfix分支。
b、修改线上bug,修改完成后合并回dev和master分支。
c、比如,在线上登录功能出现问题,我从master拉取代码创建新的分支hotfix/login,修改完成后合并到dev和master上。

以上内容来自:https://blog.csdn.net/weixin_33717117/article/details/91390610

若有问题,请联系我,谢谢。

以下内容为工作生活所浓缩,正文如下:

项目的开展与推进(首先确认,单干 还是 组团)

1、需求分析
  • 向用户初步了解需求,列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,如果有特殊需求的页面,也得备注下来。
  • 深入了解和分析需求,这里得输出明确的功能需求文档(doc或者其他的方式)
  • 和用户再次确认需求
2、概要设计
  • 系统的基本处理流程
  • 系统的组织结构
  • 模块划分
  • 功能分配
  • 接口设计
  • 运行设计
  • 数据结构设计
  • 出错处理设计
3、详细设计
  • 描述实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系
  • 说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试
4、编码

根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求

5、测试
  • 交给用户使用,用户使用后一个一个的确认每个功能
  • 按照测试执行方,可以分为内部测试和外部测试
  • 按照测试范围,可以分为模块测试和整体联调
  • 按照测试条件,可以分为正常操作情况测试和异常情况测试
  • 按照测试的输入范围,可以分为全覆盖测试和抽样测试
  • 对于一个大型软件,3个月到1年的外部测试都是正常的,因为永远都会有不可预料的问题存在
6、软件交付(软件测试通过后,给于与用户合同约定的产物)
  • 开发的目标安装程序
  • 数据库的数据字典
  • 《用户安装手册》
  • 《用户使用指南》
  • 需求报告
  • 设计报告
  • 测试报告
7、验收
  • 用户验收
8、维护
  • 根据用户需求的变化或环境的变化,对应用程序进行全部或部分的修改

项目开发"编码"过程中的CI("代码版本管理"参考)

以下不区分前后端应用
1、在组odboy下,新建远程仓库sagitarii,可见等级为public,http://gitlab.odboy.cn/tianjun/sagitarii
2、进入Git Bash,Git 全局设置
git config --global user.name "tianjun"
git config --global user.email "tianjun@odboy.cn"
2、创建新版本库
git clone http://gitlab.odboy.cn/tianjun/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
3、新增.gitignore文件
touch .gitignore
vim .gitignore
IDEA-Java .gitignore参考
.idea/*
*.iml
*/target/*
*/*.iml
/.gradle/
IDEA-Python .gitignore参考
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/

# add
.idea/
IDEA-Go .gitignore参考
# Intellij project files
*.iml
*.ipr
*.iws
.idea/

# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, built with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Dependency directories (remove the comment below to include it)
# vendor/
IDEA-Vue&React .gitignore参考
# 众多无视的扩展
*.bak
*.patch
*.diff
*.err

# git冲突合并的临时文件
*.orig
*.log
*.rej
*.swo
*.swp
*.zip
*.vi
*~
*.sass-cache
*.tmp.html
*.dump

# 操作系统或编辑器文件夹
.DS_Store
._*
.cache
.project
.settings
.tmproj
*.esproj
*.sublime-project
*.sublime-workspace
nbproject
thumbs.db
*.iml

# F忽略的文件夹
.hg
.svn
.CVS
.idea
node_modules/
jscoverage_lib/
bower_components/
dist/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
4、push .gitignore
git add .gitignore
git commit -m "add .gitignore"
git push -u origin master
5、把项目文件放进sagitarii文件夹内,提交所有文件到远程仓库
git add .
git commit -m "init project"
git push -u origin master
6、创建master和dev分支
# 从master分支创建带tag的master分支,并切换到1.0.master
git checkout -b 1.0.master
# 创建dev分支
git checkout -b 1.0.dev
# 创建个人开发分支
git checkout -b 1.0.dev_odboy
# 查看本地分支
git branch
# 提交本地分支
git push origin 1.0.master
git push origin 1.0.dev
git push origin 1.0.dev_odboy
7、把个人分支上的功能代码合并到dev分支
# 提交到远程的个人分支
git add .
git commit -m "Xxxx功能"
git pull
git push
git status

# 合并到1.0.dev上
git checkout 1.0.dev
git pull
git merge 1.0.dev_odboy
git push -u origin 1.0.dev
8、dev测试通过,把个人分支上的功能代码合并到master分支
# 合并到1.0.master上(可能会有冲突)
git checkout 1.0.master
git pull
git merge 1.0.dev_odboy
git push -u origin 1.0.master
9、新建release分支
# 发布前从master分支新建release分支
git checkout -b 1.0.release_202001141111
# 稳定版本可以打tag(比如:1.0.release,说明这个是线上最稳定的版本)
git checkout -b 1.0.release
git push origin 1.0.release
注、当master代码改动了,需要更新开发分支(dev)上的代码
# 主分支合并到特性主分支
git checkout master 
git pull 
git checkout 1.0.master
git merge master
git push -u origin 1.0.master

# 特性主分支合并到当前开发分支
git checkout 1.0.master
git pull 
git checkout 1.0.dev
git merge 1.0.master
git push -u origin 1.0.dev

# 当前开发分支合并到个人分支
git checkout 1.0.dev
git pull 
git checkout 1.0.dev_odboy
git merge 1.0.dev
git push -u origin 1.0.dev_odboy
解决代码冲突的整个流程
1、远程路径存在或本地新建一个分支
2、分支库与主库代码一致
3、本地从分支库上拉取新代码
4、本地代码已经修改,本地与新代码之间的冲突
5、整合本地代码、新代码
6、整合后,提交融合后的代码到个人私库上
7、发送合入请求
如果你认为上面这个流程很难理解的话,你可以按照以下步骤进行合并
1、本地代码提交到个人分支(commit local -> remote your branch)
2、从即将合并的分支, 拉取代码到本地(remote dev/master -> git pull), 此时可能回发生冲突, 解决冲突即可
3、推送本地仓库代码到远程个人分支(git push),然后把你的个人分支,和目标分支做个merge即合并操作,这样就不容易发生代码覆盖的事件了

如果还是嫌麻烦, 最好最丝滑的方式就是: 主干开发, 主干发布

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌 烨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值