---
title: Collaborate on a Modpack with Git
description: Set up a Git-based workflow for co-developing a modpack with multiple contributors.
---

## Overview

This guide shows you how to set up a shared modpack repository where multiple people can collaborate on instance configuration, mod selection, and config tuning using Git.

## Step 1: Initialize the Repository

One person creates the modpack:

1. Create a new instance in Polymerium (e.g. "our-pack", Fabric 1.21.4).
2. Add the initial mod list and configure everything.
3. Initialize Git in the instance directory:

```bash
cd instances/our-pack
git init
```

4. Create `.gitignore`:

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

5. Commit:

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

6. Push to GitHub/GitLab:

```bash
git remote add origin git@github.com:yourname/our-pack.git
git push -u origin main
```

## Step 2: Clone (For Collaborators)

Each collaborator:

1. Clone the repo into their Polymerium `instances/` directory:

```bash
cd ~/.trident/instances/  # or Windows equivalent
git clone git@github.com:yourname/our-pack.git
```

2. Open Polymerium — the instance appears in the sidebar.
3. Deploy to build the game directory.
4. Play and iterate.

## Step 3: Iteration Workflow

For each change cycle:

### Adding / Removing Mods

1. Make changes in Polymerium's Setup tab.
2. `profile.json` is updated automatically.
3. Commit:

```bash
cd instances/our-pack
git add profile.json
git commit -m "Add Create mod and dependencies"
git push
```

### Tuning Configs

1. Launch the game and tweak settings in-game.
2. Changes land in `live/` (untracked).
3. Open the **Workspace** tab to review diffs.
4. Sync desired changes from `live/` → `import/`.
5. Commit:

```bash
git add import/
git commit -m "Tweak performance configs for lower-end hardware"
git push
```

### Syncing with Others

```bash
git pull
# Redeploy in Polymerium to pick up changes
```

> **Important:** Close Polymerium before `git pull` to avoid conflicts with the file watcher. Reopen after pulling, then redeploy.

## Step 4: Resolve Conflicts

If two people edit `profile.json` simultaneously:

1. `git pull` — Git will flag the conflict.
2. Open `profile.json` and resolve manually. The format is JSON — look for the conflicting package entries.
3. Reopen Polymerium, verify the mod list looks correct.
4. Commit the resolution.

## Step 5: Publish a Release

When you're ready to share the modpack publicly:

1. Tag the release:

```bash
git tag -a v1.0.0 -m "First public release"
git push origin v1.0.0
```

2. In Polymerium, export the instance:
   - **Export → Modrinth format** (for Modrinth publishing)
   - **Export → CurseForge format** (for CurseForge publishing)
   - **Export → Trident format** (for Polymerium-to-Polymerium sharing)

3. Upload the exported file to your platform of choice.

## Tips

- **Use branches** for experiments — `git checkout -b experiment/new-mod`, test, merge or discard.
- **Don't track `live/` or `persist/`** — these are personal and machine-specific.
- **Use the workspace** for promoting `live/` changes to `import/` — it shows exactly what changed.
- **Keep a `CHANGELOG.md`** in the instance directory — update it with each release.
