
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:
git add -A && git commit -m "Before: [description]"before touching anything- Make your change
- Test that the server works
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.
