If at least one of your computers can be reached from all the others via ssh, or you can reach all the other computers from one (i.e. there’s a star topology), you could use unison to synchronize all kinds of files. This works very reliably and handles modifications in both directions.
I use git for my programming projects, but I find that version control is not really ideal for simple file synchronization. This is why I think that DVCs (and specifically git) are not a good solution for sync (In case that someone is interested in a discussion of these things): Keeping everything in a single repo is not handy, and solutions (like “myrepos”) are kludges. Another serious problem with using git for synchronization is that it’s not able to synchronize git repositories, as AFAIK it’s not possible/reasonable to keep git repositories under git themselves. Just imagine the case where you are in the middle of some work with a git repo (an interactive rebase, for example), and you’d like to sync and continue on another machine. With unison this works like a charm, you there’s no automatic resolution of conflicts. This is not a problem if you run unison at the beginning and at the end of each session.