Git has become the most popular version control system in the Open Source world, and more and more companies are also using it. The source code history when managed by Git is supposed to be immutable, because Git uses a content addressed database. The Git objects are indexed by their SHA-1 hash. When mistakes have been made, or to make some history based features more useful or more reliable, though, it can be interesting to transform the Git source code history. To do that it is a good idea to use "git replace".
"git replace" makes it possible to have different "views" on the history, instead of only one. It works by creating special references and using these special refs to dynamically use some git objects instead of the original ones.Survey this Session