But it's also designed to give you total control over your development workflow. Git's main job is to make sure you never lose a committed change. This tutorial discusses some of the most common reasons for overwriting committed snapshots and shows you how to avoid the pitfalls of doing so. We will discuss the strengths and weaknesses of the different methods and give examples of how to work with them. Git uses a few different methods to record changes. This tutorial will cover various methods of rewriting and altering Git history.