Email or username:

Password:

Forgot your password?
15 comments
Feoh

@b0rk You are a treasure, and I will stop saying "This is brilliant" because I'd end up doing that for every cartoon you post but - wow.

Dave

@b0rk I've put off using git for years - no need - I haven't written code for a very long time. Now, I'm reversing that trend (as a hobby). Your chart caught my attention.

At last! A glossary with interest! and in a useable format! Well thought out and easy to follow!

Thanks for posting!

a hivemind of packbats

@b0rk Would it be possible to provide a text version of this somewhere? This is a terrific explanation and I think it should be more accessible.

- Packbats 🎒

Chris P. :trek_ds9_sisko:#1️⃣

@b0rk I'll have you know you just cost me, like, one and a half cents, because I _immediately_ printed this out.

Leeloo

@b0rk
Saved. In case I ever get lost inside a git repository and need a map to find my way home.

Seriously - if I ever find that I need a tool that doesn't exist and need to write it myself.

There are two kinds of objects I didn't see mentioned - merges and packed objects. I'm guessing that merges look just like commits, and pack objects are "binary" but I have not looked.

Also, diffs aren't explained, but I believe they don't actually exist, though then I don't understand how the packed history is often smaller than the checked out head.

@b0rk
Saved. In case I ever get lost inside a git repository and need a map to find my way home.

Seriously - if I ever find that I need a tool that doesn't exist and need to write it myself.

There are two kinds of objects I didn't see mentioned - merges and packed objects. I'm guessing that merges look just like commits, and pack objects are "binary" but I have not looked.

Julia Evans

@leeloo yeah merges are commits with multiple parents!

pack files are a storage optimization for storing objects (commits, trees, blobs). I left it out because it’s really an implementation detail /optimization IMO

and like you said diffs aren’t stored in .git, they’re computed on the fly

David Flanagan

@b0rk thank you! I’ve rarely looked in that directory, but nice to know how it is laid out

Manuel Strehl 🫏

@b0rk great information, as always! Thank you for creating and sharing!

Maybe interesting in that context: some time ago I experimented with what the most minimal .git folder would look like and still be recognized by #git: manuel-strehl.de/minimal_git_f

Massimo Lauria

@b0rk so every time you touch a file, there is a whole new copy in a blob? 😨😱

Julia Evans

@massimolauria yeah but it’s really okay because periodically git will do a “garbage collection” pass where it combines similar files into one big “pack file” in a more efficient way.

i didn’t talk about that part because it’s just a storage optimization and usually doesn’t affect how you use git

DELETED

@b0rk this is making me want to finally sit down and work through shop.jcoglan.com/building-git/ where you build a simplified working git clone

invisiblethreat

@b0rk great content! (As always). I recently found pre-commit.com/ as a really useful tool for distributing coding standards inside a git repo. A bit different than what your current content, but one of worst sort of merge conflicts on teams is formatters gone rogue, IMO.

Go Up