git, how does it work?