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
- Download the JAR and place it in the
Modsdirectory of your Hytale server. - Start the server. The plugin will create a
./gitgudfolder in the server working directory.
Quick Start
- Make block changes in-game.
- Run
/gitgud commit "your message". - Use
/gitgud logor/gitgud statusto inspect state. - Use
/gitgud rollbackfor uncommitted changes, or/gitgud revertfor 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 helpor 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
./gitgudfolder, 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.


