Git: The Theoretical Minimum
I intend to write a book titled “Git: The Theoretical Minimum”, inspired by Leonard Susskind’s two books The Theoretical Minimum: What You Need to Know to Start Doing Physics and Quantum Mechanics: The Theoretical Minimum (also see his web site The Theoretical Minimum). These are awesome books and I recommend them to anyone, because physics is all around us and having a working knowledge of it is a good thing.
My reasoning in a nutshell is this: Git is the first real version control system, or rather it is probably the ancestor of the first real one. And while it is not as complicated to use as detractors like to say, it’s also not been explained in a succinct fashion. There are now many thousands of pages written, and yet a lot of Git is not explained except in answers to StackOverflow questions or by looking at the source.
I think this means that there is a need for a short volume that explains everything you need in order to do anything with Git, and I also think that this overlaps with “everything about version control” to a staggering degree. I don’t mean to have the encyclopedic volume that literally writes down everything, but rather the bare minimum you need in order to do anything you need to on your own. For example, the Git help is pretty good, but it’s also only good if you already understand things - it’s more a reminder reference than something you consult in order to learn what to do.
For example, it is probably not important to describe the Git plumbing model, but it is important to describe exactly how commits work, because that’s at the heart of many Git operations. What I hope to do is to find the basic set of things you need to know about any useful version control system, and describe them; the fact that it will be Git-centric is because Git is the most popular example of a good version control system at the moment.
Separately, I want to finish the survey of all version control systems, so that we can put most of them to bed as past history. “I have not come here to praise Perforce but to bury it”.
Reference
Mercurial for Git Users (and vice versa) - a more modern (early 2016) comparison between Mercurial and Git.
What are your favorite version control systems? - I remember using both PVCS and Projector.
Comparison of version control software
Version Control Systems Popularity in 2016
Version Control Systems: Keep Your Code In Order!
Understanding Version-Control Systems (DRAFT) - written in 2008, and may be the first attempt to cover the general theory of revision control.
Source Control HOWTO - from Eric Sink, useful for common terminology.
Version Control by Example - a 2011 online book by Eric Sink.
A Visual Guide to Version Control
Intro to Distributed Version Control (Illustrated)
A Principled Approach to Version Control - a 2006 paper: “This paper aims to give a precise, mathematical description of the version control problem and different version control systems”
The Semantics of Version Control. A 2014 paper by the authors of the previous paper.
Pijul, based on Darcs. Pijul was announced in 2014 but it’s still in (mostly slow moving) development. See HackerNews comment thread.
Darcs: Theory/Bibliography. Darcs is one the few systems that claims to be based on a strong theory; in fact, Darcs devotees are often dismissive of other efforts as not having a formal backdrop. Darcs vs Git is a classic example of “it works in theory”; to two significant digits, no one uses Darcs, everyone uses Git.
Camp (Haskell). Another system ideologically related to Darcs. Start in 2009, and seems to have been abandoned as of 2010.
Current Concepts in Version Control Systems. 2008 Bachelor thesis by Petr Baudiˇs.
Math talk: Theorem about git revision control system?
Version Control Systems. The best historical overview I’ve seen to date.
Branching and Merging: An Investigation into Current Version Control Practices. 2011 paper.
Distributed Source Code Version Control Systems: Comparison and Usage Evaluation. 2006 Bachelor’s thesis by Michal M¥rka.
Type-Correct Changes — A Safe Approach to Version Control Implementation. 2009 Master’s Thesis by Jason Dagit.
Version Control: Git, Mercurial