进阶
使用 Git 进行整合包开发
使用 Git 对整合包进行版本控制——跟踪变更、协作开发并发布发行版。
Last updated on
为什么使用 Git?
Polymerium 实例在设计上天然适配 Git:
profile.json是整合包的定义文件——纯 JSON,方便 diff 比较import/包含可分发的文件——配置、资源、自定义内容build/是可能包含个人数据的运行目录,不应纳入 Git;需要时请单独备份。persist/是本地保留,应保持私有。
这意味着你可以将实例纳入 Git 管理,获得有意义的差异比较、分支管理和协作能力。
初始设置
- 在实例目录中初始化 Git 仓库:
cd instances/my-modpack
git init- 创建
.gitignore:
build/
persist/
data.lock.json- 提交初始状态:
git add profile.json import/
git commit -m "Initial modpack"应该跟踪什么
| 文件 | 跟踪? | 原因 |
|---|---|---|
profile.json | ✅ | 整合包定义文件——版本、加载器、模组列表 |
import/ | ✅ | 可分发文件(配置、资源) |
导入层原生 Patch(patches/data.patch.json、patches/import/) | ✅ 使用时 | 可随 Trident 整合包分发的启动声明 |
build/ | ❌ | 运行产物,可能含有尚未备份的存档等数据 |
persist/ | ❌ | 玩家数据(存档、截图) |
data.lock.json | ❌ | 部署缓存,自动生成 |
开发工作流
实例首页的开发概览组件汇总 Git 状态、整合包源文件、未同步的工作副本变更、Patch、发行附件及上次运行结果。紧凑形态会隐藏无事可报的类别。要检查具体文件变更,请打开工作区。
迭代配置
- 启动游戏并在游戏内修改设置。
- 修改保存在
build/中。 - 打开工作区查看差异。
- 将确认的修改同步到
import/。 - 提交:
git add import/
git commit -m "Tweak performance configs"添加/移除模组
- 在 Polymerium 的 Setup 标签页中添加或移除模组。
profile.json会自动更新。- 提交:
git add profile.json
git commit -m "Add Sodium and Lithium"切换分支
你可以使用 Git 分支来管理实验性的整合包版本:
git checkout -b experiment/new-loader
# 在 Polymerium 中更换加载器、添加/移除模组
git add profile.json import/
git commit -m "Switch to NeoForge"
# 测试...
git checkout main # 回到稳定版本协作
与合著者共享
- 将仓库推送到共享远程仓库(GitHub、GitLab 等)。
- 合著者将仓库克隆到他们的
instances/目录中。 - 每个人的
build/和persist/都是本地的且不被跟踪。 - 通过常规 Git 工作流在
profile.json和import/上协作。
发布发行版
- 打标签发布:
git tag v1.2.0
git push origin v1.2.0- 使用 Polymerium 的导出功能导出实例。
- 将导出的整合包上传到 CurseForge、Modrinth 或两者。
使用 CLI 自动化导出
你可以跳过 GUI,使用 Trident CLI 从命令行导出:
trident instance export my-modpack --format modrinth --output ./releases/这在 CI/CD 管道中非常好用。例如,当你推送标签时自动触发构建和导出:
# .github/workflows/release.yml(简化版)
on:
push:
tags: ['v*']
steps:
- uses: actions/checkout@v4
- run: trident instance export my-modpack --format modrinth --output ./releases/
- # 将 ./releases/* 上传到 Modrinth / CurseForge完整 CI/CD 示例请参阅无头服务器指南。
提示
- 在执行 Git 操作前关闭 Polymerium——Polymerium 可能正在监视
profile.json的变化。退出后执行 Git 操作,然后再重新打开。 - 不要手动编辑
profile.json来更改版本——更安全的做法是创建新实例并迁移包。 - 使用工作区作为你的暂存区——它专为把
build/中的游戏内修改提升到import/而设计。