While there are many online tutorials on how to use git, few attemp to teach what really happens behind the common commands. Understanding the differences and interactions between commited, staged and working file status as well as between local and remote repositories is essential to any git user in order to engage in adequate and pleasant version control.