Like many others, I use git as a version control system for my Lisp
code. Version control is one of those things that offer a lot of
benefits with relatively little investment: I picked up a few basic
git commands from tutorials on the internet (Github has a nice
collection), but didn't bother to learn about git in depth.
However, as others started to contribute to my libraries, I was forced to learn more about certain features, most importantly branching and merging. After spending a few hours doing things the wrong way, I realized that I need to do some reading, and I was lucky to find Pro Git by Scott Chacon, one of the prominent git developers. Thanks to the author and the publisher (Apress), the book is available online. I really appreciate that Apress makes its books available online so I can start reading them immediately, and I have already ordered a dead tree copy.
The book is a pleasure to read, and is really useful. Instead of simply rehashing the manual, it focuses on explaining the concepts of git, and illustrates them with typical workflows. I found this invaluable: understanding the concepts behind git made me realize that I have been doing things the wrong way. I used subversion before, and it was still influencing the way I use git. For example, branching in git is really, really cheap, and I learned that I should do it more often.
My favorite chapters from this book are Git Branching, which explains the concept of branches, gives examples of basic branching and merging, branch management and typical workflows, and also discusses remote branches, and Distributed Git, which talks about distributed workflows in more detail.
I have learned a lot from this book, and hopefully it will help me
manage my Lisp libraries better. So far I have been keeping changes
on my hard disk between "releases" (updates to
master), but now I
think that I will make development branches for new features and push
them more often.