I suppose it's more than a slight bit incorrect to state that these are my first thoughts on git; I've certainly already been exposed to git in a variety of ways. I'd always been told that my love of graph theory would convert me over to this different type of version control.
I more or less decided to look into git on a set of whims, yet I was really persuaded to go to the "dark side" because I was strongly encouraged (read: required) to understand the back-end model instead of just memorize a handful of commands (like with SVN). I'd attempt to do the merits of the consequences of git's back-end model justice, but instead, I'll point you to a far more experienced git user's blog post.
My first steps to really learning git was to look at a handful of resources:
- Git for Computer Scientists: an excellent introduction if you already understand directed acyclic graphs (DAGs),
- Understanding Git Conceptually: a good introduction which requires less prior understanding of DAGs,
- A Visual Git Reference: a good way to solidify your knowledge of git once you've already gained some understanding from an introduction piece,
- Git in pictures: a nice post to read once you feel somewhat comfortable with git, and
- git's man page: actually, this is a really confusing reference unless you are already familiar with git and just want to see what a specific command does.
After an hour or so of reading, my friend Evan and I talked through a bunch of the basic commands briefly and some of the more interesting commands in greater depth. I took notes on easel paper for the basic commands, and we worked through diagrams for
I got fairly excited when I guessed that
rebase essentially applies a series of
cherry-pick calls to a branch.
I decided to use my first git repository for a documentation project I'm working on for MIT's academic computing environment, which is publicly available on github. That repository hasn't seen as much activity as I'd like yet, but I have also been using git much more frequently for my academic projects.
I really like the control that my understanding of the back-end model provides, and that control in and of itself is a sufficient reason to consider switching to git. I'll also argue that learning the back-end model is a fun enough exercise to want to switch.