Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    J

    John Wiegley

    jwiegley.github.io · Personal blog · on HN since 2015

    John Wiegley hosts "Git from the Bottom Up," a short guide to Git's internal data structures and how its commands work.

    Visit blogHN submissions
    ProgrammingOpen Source & Linux
    What HN says

    HN commenters repeatedly recommend it as the piece that made Git click for them, praising it as short, clear, and good at demystifying commands.

    Stats for nerds
    35HN people shared it
    11linked in comments
    269story points
    Jan 2026last shared
    2015people per year2026

    Top posts on HN

    1. 1
      Git from the Bottom Up (2008)
      34 people · 269 points · first shared 2015 · 28 comments on HN
    2. 2
      Keywords
      1 person · first shared 2022

    What HN people wrote when they linked it

    • fahoMay 2022

      > except that use-package, by itself, does not install anything.

      It can be configured to install things (by using the builtin package.el): https://jwiegley.github.io/use-package/keywords/#ensure-pin

      > You can use use-package to load packages from ELPA with package.el. This is particularly useful if you share your .emacs among several machines; the relevant packages are downloaded automatically once declared in your .emacs. The :ensure keyword causes the package(s) to be installed automatically if not already present on your system (set (setq use-package-always-ensure t) if you wish this behavior to be global for all packages)

      So if all you need is package.el (and there's a good chance that's the case), you can just

      (setq use-package-always-ensure t)

      and your configuration will now install the packages if you copy it to a new system.

    • callahadJun 2020

      If you decide to give Git one more shot, you might enjoy John Wiegley's Git from the Bottom Up (https://jwiegley.github.io/git-from-the-bottom-up/). It didn't teach me how to use Git, but it did teach me how Git works, and that was key to solidifying my own knowledge.

      As others have mentioned, the version control space has been effectively monopolized by Git. Mercurial offers roughly the same data model with a better interface, but you're still fighting an uphill battle with limited tooling support, etc. Fossil is notable for being the SCM used to develop SQLite, but again, it's relatively unknown outside of that space.

    • berkesJul 2020

      The git-cli is an inconsistent mess, agreed.

      The data-model, however, is not. It is actually a very smart, mathematical (cryptographical) tree-structure[1].

      I'm pretty sure some far future generation will be able to figure out the math behind a "git database". I'm actually more confident they will be able to do so, than your average "excel" or "winrar backup".

      --
      [1] I really started liking git and understanding what it all is about (and how to use the weird commandline --flags - or was is -flags or -f or -F or flags) after reading the Git From the Bottom Up book: https://jwiegley.github.io/git-from-the-bottom-up/

    • bvrmnJul 2022

      Do/did you use other VCSes? I did. ClearCase, CVS, SVN, Mercurial. It's a real horror (excluding later) to deal with. Sometimes basic operations like merge need separate role (human) to perform.

      Mercurial is nice if you are a max middle-level and do not use anything besides checkout/commit/push. Any non-trivial stuff requires manual reading (the same as for git)

      I know you have no time to know your tool. But I don't see any hurdles to allocate one evening and read https://jwiegley.github.io/git-from-the-bottom-up/.
      It gives a model that you can apply to other distributed VCS and may be make you a better engineer.

    • brasetvikAug 2022

      It's not a single digit minute read, but to me "Git from the Bottom Up" was what really made me understand git a long time ago.

      https://jwiegley.github.io/git-from-the-bottom-up/

      git's the kind of tool where understanding how your commands operate on the underlying data structures will probably make it a lot easier to use efficiently. (And they're beautifully simple despite how powerful and flexible they are)

      As a tool you might be using for hours per week for a few more decades, it's worth the investment going beyond the "in x minutes". I tend to provide both to juniors.

      Obligatory: https://xkcd.com/1597/

    • svatJan 2019

      My recommendations:

      * Git From the Bottom Up: https://jwiegley.github.io/git-from-the-bottom-up/ (PDF: http://ftp.newartisans.com/pub/git.from.bottom.up.pdf) (See also: "Linus Torvalds' greatest invention": http://perl.plover.com/yak/git/) Once your mental model matches the program, you'll be able to understand everything, hack your own solutions if necessary, etc.

      * Learn Git Branching: https://learngitbranching.js.org -- in fact I think this should be the UI for Git; wish someone would make that happen (i.e., so that you can point it to any Git repo and get that sort of visualization for it).

    Related

    Nick Drozdnickdrozd.github.io25 people

    Signed Char Lotte

    Nick Drozd
    Personal · last shared 2026
    Stefan Judisstefanjudis.com49 people

    Git commit accepts several message flags (-m) to allow multiline commits

    Stefan Judis
    Personal · last shared 2026
    The Morning Paperblog.acolyer.org606 people

    Local-first software: you own your data, in spite of the cloud

    The Morning Paper
    Personal · last shared 2026
    Jake Archibaldjakearchibald.com191 people

    I discovered a browser bug

    Jake Archibald
    Personal · last shared 2026
    Not a Monad Tutorialnotamonadtutorial.com40 people

    Weld: Accelerating numpy, scikit and pandas as much as 100x with Rust and LLVM

    Not a Monad Tutorial
    Publication · last shared 2023
    Level Up Codinglevelup.gitconnected.com224 people

    We reduced our server costs by moving away from AWS

    Level Up Coding
    Publication · last shared 2026
    LispCastlispcast.com108 people

    React: Another Level of Indirection

    LispCast
    Personal · last shared 2022
    Andrew Godwinaeracode.org68 people

    Hello, This Is London Rising: 3D Printing Maps from LIDAR Data

    Andrew Godwin
    Personal · last shared 2025