date: 2011-11-25 tags: - git - games title: Syncing Minecraft Saves with Git --- I've been playing Minecraft for a while and after doing some travelling, I've ran into the issue where I'd like to syncronize my Minecraft saves across computers. --- I already use git for software version control, so why not shoehorn Minecraft into it? Not only would I get easy syncronization, I would also get version control so if I seriously mung something up, I can revert back to a previous save! Here's how I did it. First, I had to make sure git was installed on all of my machines. Luckily on Linux git is usually provided in the package repository (git-core), but since my desktop also runs Windows (for gaming), I use [msysgit](http://code.google.com/p/msysgit/). For example, on Debian/Ubuntu all you need to do is: ``` sudo apt-get install git-core ``` Once git was installed, I decided to go with a centralized approach since I want one 'official' spot where I can push and pull my Mincraft saves to. I already have a server from the wonderful folks at [Linode](http://linode.com), so I just initialized a bare (centralized) repository on there: ``` cd /path/to/repos/minecraft git init --bare ``` Then, since I already have Minecraft installed on my desktop with quite a few saves, I had to clone the central repository, add my saves, commit, and then push back to the central repository. ``` cd /home/nick/.minecraft/ git clone nick@nickpegg.com:/path/to/repos/minecraft temp mv temp/.git ./ ``` Since you can't clone a repository into a non-empty folder, I had to clone it to a temporary folder and then copy the .git folder from there into my .minecraft folder. Now that my local repository was setup, I added the files I wanted to syncronize. ``` git add saves screenshots stats texturepacks options.txt servers.dat git commit -m 'Initial commit' ``` Once I had the files commited, all I needed to do was push them up to the central repository on my server. ``` git push ``` And now I have my Minecraft files in a central spot! Now every time I'm done playing a bit, all I have to do to sync my files up is: ``` git commit -a -m 'Played a bit' git push ``` Now, on other machines, all I need to do is clone once, ``git pull`` before playing, and then commit and push when I'm done playing! Easy peasy. Of course, you can do more fancy things with git since it's a full-blown version control system. If you feel inlined to play with those features, go read some [documentation](http://gitref.org/).