how does version control software like git work?