There are quite a number of blog posts out there that posit variations of idea that Git has mutable history. For example, Patrick Thompson, in a post about Git versus Mercurial, says, “git provides you with tools to go back in time and edit your commit history.” Dustin Sallings, in a similar post, says, “The culture of mercurial is one of immutability…. git is all about manipulating history.”
Well, this isn’t quite true. It may look like this at first glance, because Git has the unfortunate property of hiding its clean interior behind a rather messy and inconsistent user interface, but a closer look will give us a better understanding of what’s really going on.