主页 > 互联网  > 

git管理的项目发布时有收费版/免费版/客户定制版,如何管理分支,通过merge(合并)还是cherry-pic

git管理的项目发布时有收费版/免费版/客户定制版,如何管理分支,通过merge(合并)还是cherry-pic

发布版本有收费版/免费版/客户定制版,虽然说在代码中增加条件判断,使用环境变量切换逻辑,能适配多个版本,但实际操作中常常无法这样理想化,有些差异就是写死在代码上。

所以摸索了以下分支管理模式:

main:主分支,维护收费版代码,作为核心代码库 dev:开发分支,所有功能在此开发、测试后合并到 main free:免费版分支,基于 main 创建,调整/删除或屏蔽某些模块 custom-{客户名}:客户定制分支,基于 main 创建,额外添加或调整某些模块

每做完一个新的迭代,通过merge(合并) 或 cherry-pick(挑拣) 合到发行版中。

merge(合并)cherry-pick(挑拣提交)适用场景- 更新的那部分代码完全兼容各个版本- 单独为某一版本做的特定功能、特定配置引入内容整个分支的全部改动仅特定提交的改动提交历史保留原始历史和合并节点仅复制选定的提交,不保留合并关系冲突处理多个提交一起处理冲突,可能复杂只处理挑拣的提交,冲突范围小溯源清晰保留合并路径,方便审计无法追溯原始分支来源

>>更新的那部分代码完全兼容:例如免费版和收费版差异不大,merge 可以一键同步所有功能。

>>代码有明显差异:例如收费版新增10 个新特性,免费版只要其中的 3 个-->这时用cherry-pick

流程 

1、创建main分支 (可以初始化 README.md、.gitignore、初始代码、目录结构等) 2、在main分支完成一次基础提交 3、从main创建 dev 分支 4、从dev创建feature分支(可能创建多个feature分支) 5、在feature分支上进行开发 6、切换到dev分支,把feature分支合到dev分支。 7、切换到main分支,把dev分支合并到main分支。 8、从main分支创建release分支。 9、在realese分支上修改特定配置。 10、把release分支发布。 11、重复步骤4-7 12、切换到release分支,把main分支合并到release分支。(此前在release分支修改的特定配置不会被覆盖) 13、把release分支发布。

# 合并收费版 git checkout main git merge dev # 挑拣免费版需要的功能 git checkout free git cherry-pick <commit-id>

具体实施:

# 初始化项目 git init echo "# 项目名称" > README.md git add . git commit -m "init: 初始化项目" # 创建 main 和 dev git branch -M main git checkout -b dev # 创建 free(免费版分支,长期维护) git checkout -b free # 推送到远程仓库 git remote add origin <你的仓库地址> git push -u origin main git push -u origin dev git push -u origin free ##### 功能开发 ##########################3 git checkout dev git checkout -b feature/login # 开发、提交代码 git add . git commit -m "feat: 实现用户登录" git checkout dev git merge --no-ff feature/login -m "merge: 合并登录功能" git push origin dev git branch -d feature/login #### 收费版发布 #######################33 git checkout main git merge --no-ff dev -m "release: 发布收费版 v1.0.0" # 创建 release 分支 git checkout -b release/v1.0.0 # 根据实际需要调整收费版配置 vim config/settings_pro.py # 提交发布 git add . git commit -m "chore: 调整 v1.0.0 收费版配置" git push origin release/v1.0.0 # 打标签发布 git tag v1.0.0 git push origin v1.0.0

标签:

git管理的项目发布时有收费版/免费版/客户定制版,如何管理分支,通过merge(合并)还是cherry-pic由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“git管理的项目发布时有收费版/免费版/客户定制版,如何管理分支,通过merge(合并)还是cherry-pic