Well, there's the distributed side, and there's the 'make branches and merge them without going insane' side. If your version control system supports easy branching and merging, you can commit your stuff to an unstable branch or a personal work branch, where they are visible to everyone but don't break things for others until you're ready to push them to the main branch.