如何用Git分离Lua库与开发代码并保持同步?
针对Lua库代码与开发代码分离的Git管理方案
一、单仓库多分支+子目录过滤(无需独立仓库)
推荐用Git的git filter-repo或git subtree工具,在同一个仓库里维护两个分支,既满足并行开发需求,又能实现自动同步:
- release分支:仅保留库代码目录,隐藏开发依赖,供用户下载使用
- dev分支:保留完整项目(库代码+开发代码),日常开发工作全部在此分支完成
具体操作步骤
搭建初始分支结构
- 从当前
master分支创建dev分支,保留所有项目内容:git checkout -b dev - 创建
release分支,仅保留库代码目录:
(提示:git checkout -b release git filter-repo --path <你的库代码文件夹名> --forcegit filter-repo会重写仓库历史,执行前务必备份整个仓库)
- 从当前
实现双向自动同步
- 从
dev同步到release:在dev分支完成开发提交后,用subtree将库代码的变更推送到release分支,无需手动重复提交:git subtree push --prefix <库代码文件夹名> origin release - 从
release同步到dev:如果用户在release分支提交了库代码修复,可拉取合并到dev的对应目录:git subtree pull --prefix <库代码文件夹名> origin release
- 从
CI流程适配
dev分支:运行全量测试,包括开发代码的验证、代码生成流程等release分支:仅运行库代码的可用性测试,完成打包发布给用户
减少重复操作的技巧
- 所有开发工作统一在
dev分支完成,提交一次后用脚本自动同步到release,避免手动在两个分支重复提交 - 编写简单的Shell脚本封装同步命令,比如
sync-to-release.sh,一键执行同步操作
- 所有开发工作统一在
二、同类项目参考思路
不少开源工具库都采用类似的分支管理模式:
- 前端UI库:开发分支保留源码、测试工具、文档生成代码,发布分支仅存放编译后的可分发文件和核心源码
- Lua生态中的部分库:通过脚本自动从开发分支提取核心库代码到发布分支,同时保持提交历史同步
三、关于问题是否删除的建议
你的问题完全符合Stack Exchange规则,且属于工具库维护中常见的分支管理场景,对其他有类似需求的开发者具备参考价值,不需要删除。
内容的提问来源于stack exchange,提问作者dunger_so
相关产品推荐
相关产品推荐

