Using Git to Manage Your Minecraft Server Configuration Files

Published on

A plugin update broke your server. You changed the config yesterday but cannot remember what. Here is how to use Git to track every YAML change, roll back instantly, and never lose a working config again.

Written by Jochem Wassenaar – CEO of Space-Node – 15+ years combined experience in game server hosting, VPS infrastructure, and 24/7 streaming solutions. Read author bio →

minecraft server git config management guide

You updated EssentialsX and restarted the server. Warps stopped working. You check the config file and something looks different. Did the update overwrite your changes? Did you edit the wrong file? You have no idea because there is no record of what the config looked like before the update.

Git solves this. Git tracks every change to every file with a timestamp and description. You can see exactly what changed, when, and why. Rolling back to a previous version takes one command.

This is not overkill for a Minecraft server. Professional server administrators use version control because configs break constantly and manual backups are unreliable.


Step 1: Install Git on Your Server

Most Linux servers have Git pre-installed. Check:

git --version

If not installed:

sudo apt install git -y

Step 2: Initialize a Repository

Navigate to your server directory:

cd /home/minecraft/server

Initialize Git:

git init

Step 3: Create a .gitignore File

You do not want to track everything. World files are huge and change constantly. Track only configuration files and plugin configs.

Create .gitignore:

# Ignore world data
world/
world_nether/
world_the_end/

# Ignore compiled plugin jars
plugins/*.jar

# Ignore logs
logs/
*.log

# Ignore crash reports
crash-reports/

# Ignore BlueMap tiles
plugins/BlueMap/web/maps/

# Ignore cache files
*.cache
.cache/

This tells Git to ignore large binary files and track only text-based configs.


Step 4: Make Your First Commit

Add all config files:

git add -A
git commit -m "Initial server config - all plugins working"

This snapshot captures the current state of every tracked file. You can always return to this exact state.


Step 5: Track Changes as You Make Them

Before changing anything, commit the current state:

git add -A
git commit -m "Before EssentialsX update"

Make your change (update the plugin, edit a config).

After the change:

git add -A
git commit -m "Updated EssentialsX to 2.21.0 - changed warp permissions"

Step 6: See What Changed

View the difference between now and the last commit:

git diff

View the history of all commits:

git log --oneline

Output:

a3f8d21 Updated EssentialsX to 2.21.0 - changed warp permissions
b7c2e19 Before EssentialsX update
1d4a8f3 Initial server config - all plugins working

See what changed in a specific commit:

git show a3f8d21

Step 7: Roll Back a Bad Change

EssentialsX update broke warps. Roll back to the previous commit:

git checkout b7c2e19 -- plugins/Essentials/config.yml

This restores the Essentials config to its state before the update, without affecting anything else. Restart the server and warps work again.

To roll back everything:

git reset --hard b7c2e19

This restores ALL files to the state at that commit. Use with caution.


Step 8: Push to a Remote Repository (Optional)

For extra safety, push your config repository to GitHub or GitLab. If your server dies, all configs are backed up remotely.

Create a private repository on GitHub (do not use public, your configs contain database passwords).

git remote add origin https://github.com/yourname/mc-server-config.git
git push -u origin main

Now your configs exist in two places: on the server and on GitHub.


Practical Workflow

Here is the workflow I recommend for every configuration change:

  1. git add -A && git commit -m "Before: [description]" before touching anything
  2. Make your change
  3. Test that the server works
  4. git add -A && git commit -m "[description of what you changed]"

If the change broke something: git checkout HEAD~1 -- path/to/file to restore just that file, or git reset --hard HEAD~1 to undo everything.


What to Track

| Track | Do Not Track | |---|---| | server.properties | world/ folders | | spigot.yml, paper.yml, bukkit.yml | Plugin .jar files | | All files in plugins/*/config.yml | Logs | | Permissions configs | BlueMap tiles | | Datapack .json files | Player data (.dat files) |


Automation: Auto-Commit on Restart

Add an auto-commit step to your server start script:

#!/bin/bash
cd /home/minecraft/server
git add -A
git commit -m "Auto-commit before restart $(date +%Y-%m-%d_%H:%M:%S)" --allow-empty
java -Xms4G -Xmx4G -jar paper.jar nogui

Every restart creates a checkpoint. If something breaks, you know the last working state was one restart ago.

Space-Node servers support SFTP and SSH access for Git integration. Track your configs and never lose a working setup again. Get started here.

Jochem Wassenaar

About the Author

Jochem Wassenaar – CEO of Space-Node – Experts in game server hosting, VPS infrastructure, and 24/7 streaming solutions with 15+ years combined experience.

Since 2023
500+ servers hosted
4.8/5 avg rating

Our team specializes in Minecraft, FiveM, Rust, and 24/7 streaming infrastructure, operating enterprise-grade AMD Ryzen 9 hardware in Netherlands datacenters. We maintain GDPR compliance and ISO 27001-aligned security standards.

View Space-Node's full team bio and credentials →

Start Minecraft Server in Minutes

Join content creators worldwide who trust our minecraft infrastructure. Setup is instant and support is always available.

Using Git to Manage Your Minecraft Server Configuration Files