What do I need to read to understand how git works?

Git

Git 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

Solution 2 - Git

For me, the following three resources were very, very helpful, in this order:

  1. The Thing About Git explained why I should even care

  2. Git Magic explained how to get started

  3. 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.

I wrote my opinion about the book in a review at Amazon.

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

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 http://repo.or.cz/w/git.git?a=tree;f=Documentation/technical;hb=HEAD">Documentation/technical</a> directory of the git source code.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMrFoxView Question on Stackoverflow
Solution 1 - GitGene TView Answer on Stackoverflow
Solution 2 - GitKurt ChristensenView Answer on Stackoverflow
Solution 3 - GitAristotle PagaltzisView Answer on Stackoverflow
Solution 4 - GitPat NotzView Answer on Stackoverflow
Solution 5 - GitJ. BruniView Answer on Stackoverflow
Solution 6 - GitTalespin_KitView Answer on Stackoverflow
Solution 7 - GitwarrenView Answer on Stackoverflow
Solution 8 - GitColonel SponszView Answer on Stackoverflow
Solution 9 - GitMichelView Answer on Stackoverflow
Solution 10 - GitChris YoungView Answer on Stackoverflow
Solution 11 - GitinnaMView Answer on Stackoverflow
Solution 12 - GitmipadiView Answer on Stackoverflow
Solution 13 - GitHenrik PaulView Answer on Stackoverflow
Solution 14 - GitJesperEView Answer on Stackoverflow
Solution 15 - GitCesarBView Answer on Stackoverflow