Understanding Git's Internal Mechanics