
Git from the Bottom Up (2009) [pdf] - brudgers
http://ftp.newartisans.com/pub/git.from.bottom.up.pdf
======
jonahx
Web version: [http://jwiegley.github.io/git-from-the-bottom-
up/](http://jwiegley.github.io/git-from-the-bottom-up/)

A nice resource in the same vein -- build a bare bones git in javascript:
[http://kushagragour.in/blog/2014/01/build-git-learn-
git/](http://kushagragour.in/blog/2014/01/build-git-learn-git/)

And finally, Linus's one page explanation of git's central concepts for the
initial commit of git:
[https://github.com/git/git/tree/e83c5163316f89bfbde7d9ab23ca...](https://github.com/git/git/tree/e83c5163316f89bfbde7d9ab23ca2e25604af290)

~~~
rezzo
I have just created EPUB and MOBI versions from the latest commit on the
original book's repository (2015-08-03): [https://github.com/johnrezzo/git-
from-the-bottom-up-ebook](https://github.com/johnrezzo/git-from-the-bottom-up-
ebook)

------
erikb
This is the right way to learn Git. I don't know how good this is, but I feel
most of the strange unintuitiveness of git went away and was replaced by a
feeling of productivity since I understood what happens under git's hood.

~~~
brudgers
The big take away for me was the idea of blobs and trees as Hickeyian values
and commits as Von Neumann places. [1] If there is one weakness is the article
it is ending with _stash_ , which to me seems to be a bit of a feature in
search of a workflow more than something that enhances distribution and
sharing among a team in so far as the class of problem it addresses seems to
result from larger issues of team structure and workflow [if it's worth saving
then the whole team should know about it and have access].

It's useful to know about, but placing it at the end makes it seem like a high
order bit rather than something for a corner case.

[1]: [http://www.infoq.com/presentations/Value-
Values](http://www.infoq.com/presentations/Value-Values)

~~~
JoshTriplett
I find stash useful primarily as a place to hold things for a few minutes, and
no longer. In particular, I frequently use "git stash", followed by "git pull
--rebase", and if all went well, "git stash pop". I could just as easily do
"git commit -a -m 'WIP'", "git pull --rebase", and "git reset HEAD^", but I
find stash more intuitive.

~~~
brudgers
That sort of gets at my point, stash makes sense in a corner of a high
disciplined workflow. But the article presents it as approaching "best
practice" and as a belt to sport with one's lederhosen. By analogy it's a bit
like multiple inheritance in C++, on occasion and for some people it might be
just the thing, but it's probably not a good starting assumption at the design
phase.

Though again, it's a minor criticism and mostly related to the impression of
importance positioning it at the end of the article suggests [i.e. placing the
strongest point in paragraph four of the five paragraph essay].

~~~
davvolun
> as a belt to sport with one's lederhosen

That sounds to my American ears like the most German thing I've ever heard.

------
userbinator
Talking about merges in Git always reminds me of this Linus post:

[http://marc.info/?l=linux-
kernel&m=139033182525831](http://marc.info/?l=linux-kernel&m=139033182525831)

 _there 's clearly a balance between "octopus merges are fine" and "Christ,
that's not an octopus, that's a Cthulhu merge"._

(Also, GitHub's logo is reminiscent of the "octopus merge".)

------
TechieKid
Related, for visual learners, Git for ages 4 and up:
[https://www.youtube.com/watch?v=1ffBJ4sVUb4](https://www.youtube.com/watch?v=1ffBJ4sVUb4)

~~~
m1keil
this is awesome, thank you!

------
ziyao_w
Seems to be down ATM. Archive link:
[http://web.archive.org/web/20150906053023/http://ftp.newarti...](http://web.archive.org/web/20150906053023/http://ftp.newartisans.com/pub/git.from.bottom.up.pdf)

------
bhaumik
There's also Git from the Inside Out:
[https://codewords.recurse.com/issues/two/git-from-the-
inside...](https://codewords.recurse.com/issues/two/git-from-the-inside-out)

*Part of a new publication by Recurse Center/Hacker School

------
xjia
Related: [https://git-scm.com/book/en/v1/Git-Internals-Git-
Objects](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects) (and other
sections in that chapter)

~~~
ben_straub
This chapter was updated for the 2nd edition:

[https://git-scm.com/book/en/v2/Git-Internals-Git-Objects](https://git-
scm.com/book/en/v2/Git-Internals-Git-Objects)

------
kranner
My favourite introduction to Git internals is by Scott Chacon:

[https://github.com/pluralsight/git-internals-
pdf/releases](https://github.com/pluralsight/git-internals-pdf/releases)

------
carltonf
This is the document got me really understand Git. It's really helpful to know
the internals as the surface of Git is too many to comprehend on their own.

------
lukego
This was the first explanation of Git that made sense to me.

------
e19293001
What tool was used to create this document?

~~~
copperx
Could be pain Tex, but I doubt it. Could be troff, but because it was easily
converted to html, I doubt that to. Best bet is Markdown + some typesetter.

------
hasenj
Old but gold. This is how I learned git, and I think it's the only proper way.

Actually I did `git help tutorial` first to get started.

