What do I need to read to understand how git works?
GitGit Problem Overview
I would like to understand the way git works from a architects point of view. How are files stored, how are versions kept and how do changes happen (branches, merges, etc.)?
I am not searching for information how to use it. (I already found a lot of pages with tutorials.) But I did not find any "behind the scenes" details, that would make me understand.
Git Solutions
Solution 1 - Git
http://eagain.net/articles/git-for-computer-scientists/
http://www.loria.fr/~molli/pmwiki/uploads/Main/gitmanual.pdf Chap 7
[Git From the Bottom Up][1]
[1]: http://ftp.newartisans.com/pub/git.from.bottom.up.pdf "Git From the Bottom Up"
Solution 2 - Git
For me, the following three resources were very, very helpful, in this order:
-
The Thing About Git explained why I should even care
-
Git Magic explained how to get started
-
Git The Basics [pdf] explained - graphically, and in detail - what happens when I add, remove, merge, etc.
Solution 3 - Git
The Git Internals ebook has already been mentioned. I will point out that its author, Scott Chacon, gave a fantastic presentation about git at RailsConf 2008 that covers much the same ground as the book.
Said Scott now maintains <http://git-scm.com/>;, which includes the Git community book, which is more of a usage tutorial than a technical description, but does include both a nice conceptual overview of the git data model in the introductory chapter and a detailed one in its closing chapter.
Solution 4 - Git
The US$9 100+ page PDF book from PeepCode called Git Internals is fantastic. It's well written, uses great, clear visuals and is also a quick read. I absorbed as much free online material as I could but this book put me over the top.
Solution 5 - Git
To understand how git works you need to read Pro Git book, fully available online for free.
Written by Scott Chacon, one of the guys behind GitHub.
Solution 6 - Git
Assume we are living in a pre git era. And you want to write a version control system which is fast and better than the existing vcs. All you need is a great idea. At that moment of time the below article would be of much help.
http://tom.preston-werner.com/2009/05/19/the-git-parable.html
Solution 7 - Git
I found this site when I googled "git architecture": http://speirs.org/2007/07/19/a-subversion-user-looks-at-git
Git has a mailing list: "[email protected]&body=subscribe%20git" (http://git.or.cz/#community)
And this wikipedia article may be helpful: <http://en.wikipedia.org/wiki/Git_(software)>
Solution 8 - Git
There's a good Google tech talk: Linus Torvalds on git
OK, it's not something to read but it does cover some of the Git internals and design philosophy.
Solution 9 - Git
I found these pages useful :
Solution 10 - Git
The git source code. :-)
Solution 11 - Git
This talk by Randal Schwartz gave me a pretty good overview.
Solution 12 - Git
One day I actually sat down and read the entire Git User's Manual. Turned out to be a good idea -- the manual is very helpful, explains a lot, and is quite clear and provides useful examples.
Solution 13 - Git
Wikipedia might get you started.
I do remember encountering some documents describing some of the internal architecture, so I know that they are out there. I just can't remember where they were...
Solution 14 - Git
I've found the Git User Manual to be very enlightening.
Solution 15 - Git
There are some interesting documents on the Documentation/technicalhttp://repo.or.cz/w/git.git?a=tree;f=Documentation/technical;hb=HEAD">Documentation/technical</a> directory of the git source code.