Possible Duplicate:
When should the VCS history of a project be deleted?
I am experienced using svn and recently started learning git. I was quite shocked to learn that git has features that allow you to "rewrite history".
Coming from svn, I had accepted as sacrosanct the source control principle that once a change is committed, there is no way to "undo" the commit itself... the most one can do is execute a later commit that effectively "reverses" the changes made in the earlier commit, but one can always reproduce the state of any commit that had been done in the past.
What is the rationale for changing this "principle"? Is there something different about git that makes this OK, or does the design of git reflect a different "philosophy" of source control that differs with the "philosophy" of svn?