@mrguyorama said:

I also don't understand why, at least in a large company, a centralized repository doesn't make more sense.

One of the common misconceptions of people switching from a VCS to a DVCS is that there is no central repository in a DVCS.

That is wrong. You're still going to have a central server that holds he master copy of the code. Or at least you'd better be doing it that way.

However, if something catastrophic happens and your central server does go down, any copy of the repository can be used to recreate the copy on the central server for the branches it has checked out.

You can checkin changes locally if you want a history of the changes you're making. You can even decide later to go back and merge these changes into a single commit before pushing it back to the master branch in order to keep the history on master cleaner.

If you merge commits after pushing changes to master (and after your coworkers have checked out some of your changes), you'll probably get very nasty looks from your coworkers as you force them all to do merges that affect every file you touched.

You can also do a form of review in DVCSs by requiring that changes be done in branches. Then, developers have to use pull requests to merge the changes back to master which can be reviewed by other developers on the team.