"The thing about Git is that it's oddly liberal with how and
when you use it. Version control systems have traditionally
required a lot of up-front planning followed by constant
interaction to get changes to the right place at the right time and
in the right order. And woe unto thee if a rule is broken somewhere
along the way, or you change your mind about something, or you just
want to fix this one thing real quick before having to commit all
the other crap in your working copy.
"Git is quite different in this regard. You can work on five
separate logical changes in your working copy--without interacting
with the VCS at all--and then build up a series of commits in one
fell swoop. Or, you can take the opposite extreme and commit really
frequently and mindlessly, returning later to rearrange commits,
annotate log messages, squash commits together, tease them apart,
or rip stuff out completely. It's up to you, really. Git doesn't
have an opinion on the matter..."