Many of us use git every day but we don’t really understand how it works. This leads to lots of headaches and messy code bases. Lets dive into git to understand how it all comes together - the objects that make up git, creating the commits that we all know and love, and working with them. What are branches, actually? What happens when we merge and when we rebase? Which one should we choose? Understanding what goes on behind the scenes enables us to get out of the messy git situations we all know (and probably don’t love)… or better yet, to avoid them in the first place!