I always try to follow best practices, so I'm in the process of learning Git
since the Rails community seems to have favored that over Subversion (I know
the basics of svn as it stands right now). I have to admit, I like the idea
of working locally and then pushing it up when I'm done, instead of always
having to push it to a central server.
The one thing that confuses me, however, is that with Subversion you have
your central dev/staging server, and you commit and checkout to/from that,
which enables you to use continuous integration or similar to make sure that
the build is working. I like the distributed model of Git, but I'm
disturbed that there's no "main" server. I guess you can set up the server
in the same way and push/pull to/from it just like subversion when you're
ready, but wouldn't this cause issues if I do several commits on my local
version (say, I'm working on implementing a new module) and then push it to
my staging server? The revisions would be different because my local branch
has more commits (for individual pieces of the module) and the "master"
repository only has one (the finished module itself). That sounds like a
good idea, since you can do several mini-commits locally, then push it all
up to the staging environment when the module/task/feature is complete.
I don't see how this works within Git, unless Git doesn't care about the
revisions. Am I getting myself confused over nothing here?