---
title: 使用 Git 进行整合包开发
description: 使用 Git 对整合包进行版本控制——跟踪变更、协作开发并发布发行版。
---

## 为什么使用 Git？

Polymerium 实例在设计上天然适配 Git：

- `profile.json` 是整合包的定义文件——纯 JSON，方便 diff 比较
- `import/` 包含可分发的文件——配置、资源、自定义内容
- `build/`、`live/`、`persist/` 是运行时产物，不应纳入版本控制

这意味着你可以将实例纳入 Git 管理，获得有意义的差异比较、分支管理和协作能力。

## 初始设置

1. 在实例目录中初始化 Git 仓库：

```bash
cd instances/my-modpack
git init
```

2. 创建 `.gitignore`：

```plaintext
build/
live/
persist/
data.lock.json
```

3. 提交初始状态：

```bash
git add profile.json import/ icon.png README.md CHANGELOG.md
git commit -m "Initial modpack"
```

## 应该跟踪什么

| 文件 | 跟踪？ | 原因 |
|------|--------|-----|
| `profile.json` | ✅ | 整合包定义文件——版本、加载器、模组列表 |
| `import/` | ✅ | 可分发文件（配置、资源） |
| 图标 / README / CHANGELOG | ✅ | 整合包元数据 |
| `build/` | ❌ | 构建产物，可复现 |
| `live/` | ❌ | 工作副本，个人使用 |
| `persist/` | ❌ | 玩家数据（存档、截图） |
| `data.lock.json` | ❌ | 部署缓存，自动生成 |

## 开发工作流

### 迭代配置

1. 启动游戏并在游戏内修改设置。
2. 修改保存在 `live/` 中。
3. 打开[工作区](/docs/advanced/workspace)查看差异。
4. 将确认的修改同步到 `import/`。
5. 提交：

```bash
git add import/
git commit -m "Tweak performance configs"
```

### 添加/移除模组

1. 在 Polymerium 的 Setup 标签页中添加或移除模组。
2. `profile.json` 会自动更新。
3. 提交：

```bash
git add profile.json
git commit -m "Add Sodium and Lithium"
```

### 切换分支

你可以使用 Git 分支来管理实验性的整合包版本：

```bash
git checkout -b experiment/new-loader
# 在 Polymerium 中更换加载器、添加/移除模组
git add profile.json import/
git commit -m "Switch to NeoForge"
# 测试...
git checkout main  # 回到稳定版本
```

## 协作

### 与合著者共享

1. 将仓库推送到共享远程仓库（GitHub、GitLab 等）。
2. 合著者将仓库克隆到他们的 `instances/` 目录中。
3. 每个人的 `live/` 和 `persist/` 都是本地的且不被跟踪。
4. 通过常规 Git 工作流在 `profile.json` 和 `import/` 上协作。

### 发布发行版

1. 打标签发布：

```bash
git tag v1.2.0
git push origin v1.2.0
```

2. 使用 Polymerium 的[导出](/docs/managing/import-export)功能导出实例。
3. 将导出的整合包上传到 CurseForge、Modrinth 或两者。

#### 使用 CLI 自动化导出

你可以跳过 GUI，使用 [Trident CLI](/docs/advanced/cli) 从命令行导出：

```bash
trident instance export my-modpack --format modrinth --output ./releases/
```

这在 CI/CD 管道中非常好用。例如，当你推送标签时自动触发构建和导出：

```yaml
# .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 示例请参阅[无头服务器指南](/docs/guides/headless-server)。

## 提示

- **在执行 Git 操作前关闭 Polymerium**——Polymerium 可能正在监视 `profile.json` 的变化。退出后执行 Git 操作，然后再重新打开。
- **不要手动编辑 `profile.json` 来更改版本**——更安全的做法是创建新实例并迁移包。
- **使用工作区**作为你的暂存区——它专为 `live/` → `import/` 流程而设计。
