promotional bannermobile promotional banner
premium banner
Git for Hytale: a simplified version control system to incrementally save worlds and revert changes by using built-in Hytale commands.

Description

GitGud — Lightweight in-game world versioning for Hytale

A simple server plugin that tracks block placements and breaks, lets builders save changes as local commits, and easily revert or stash changes. Designed for small teams and creative servers to recover mistakes without external tools.

Features

  • Track block changes (place / break).
  • Commit and revert changes with messages.
  • Automatically stash and unstash uncommitted changes to preserve changes after server restarts and save memory.
  • Rollback unsaved changes.
  • Tags for marking important commits.
  • Checkout by commit index, pointer (HEAD or TAIL), or by tag name.
  • Status and log commands to inspect repository state and history.

Installation

  1. Download the JAR and place it in the Mods directory of your Hytale server.
  2. Start the server. The plugin will create a ./gitgud folder in the server working directory.

Quick Start

  1. Make block changes in-game.
  2. Run /gitgud commit "your message".
  3. Use /gitgud log or /gitgud status to inspect state.
  4. Use /gitgud rollback for uncommitted changes, or /gitgud revert for the latest committed change.

Commands

Below are the in-game commands and how to use them.

/gitgud help
  Show command help text.

/gitgud status
  Shows:
  - commit count
  - in-memory unstashed change count ("Changes since last stash")
  - stash file count

/gitgud log
  Prints commit history from HEAD backward.
  The CURRENT commit is marked with "<--".

/gitgud commit "<message>"
  Creates a commit from recent block changes with the given message.
  Fails if there are no changes.
  Fails in detached mode (when HEAD != CURRENT).

/gitgud rollback
  Reverts uncommitted block changes only.

/gitgud revert
  Reverts the latest commit (from CURRENT), then deletes that commit file.
  Also rolls back uncommitted changes first.
  Fails in detached mode (when HEAD != CURRENT).

/gitgud stash
  Manually stash in-memory block changes to `.gitgud/stash`.
  Mostly useful for testing (auto-stash already exists).

/gitgud tag add <name> [--desc "<description>"]
  Adds a tag to the latest commit (HEAD).
  Description is optional and defaults to "No description provided".

/gitgud tag list
  Lists all tags in the repository.

/gitgud tag del <name>
  Deletes a tag from the repository.

/gitgud checkout <index|HEAD|TAIL> [--tag]
  Checks out by commit index, HEAD, TAIL, or a tag with --tag.
  Index is zero-based in HEAD-chain order:
  - 0 = HEAD (newest)
  - 1 = parent of HEAD
  - etc.
  Checkout moves CURRENT and applies/reverts commits as needed.
  Use `--tag` when the argument is a tag name instead of an index.

Notes:

  • If a command is missing or named differently in your build, check /gitgud help or the plugin documentation bundled with the JAR.
  • Permissions: only server operators can use these commands by default.

Troubleshooting

  • Ensure that the user has OP permissions to run GitGud commands.
  • If the plugin does not create the ./gitgud folder, ensure the server process has write permission to its working directory.
  • If block changes are not being recorded, check server logs for plugin initialization messages and ensure the plugin is loaded.

Contributing

Contributions and bug reports are welcome. Please open issues and pull requests on the project repository.


Lightweight recovery for accidental edits and iterative building — easy to use, easy to restore.