Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

Agreed. Explanations of git sometimes remind me of monad tutorials.


sort by: page size:

It seems to me that git tutorials are the new monad tutorials. The concepts are simple, but the names are confusing (see "checkout" or "return", "reset" or "bind").

There are a lot of tutorials like this one, but I think that they mostly help the writer (not that it's a bad thing).


Ah - makes a lot more sense when they describe Git, with its nested interfaces and argument parsers (and reused logic therein) as a motivating example!

I wish people would put this much effort into learning git, which is actually useful. It's very similar.

I actually found gitcore-tutorial(7) to be a really great resource when I was learning git.

Took me many steps to finally internalize enough of git internals (still a tiny bit) to start losing fear and discomfort. I find it very similar to learning the semantic of dynamic languages (python: http://www.pythontutor.com/, js) where you need to see the data model evolving next to the main `pointers`. It looks obscure but it's not large. Small things aren't easy but not necessarily complex #hickeyism.

https://codewords.recurse.com/issues/two/git-from-the-inside...

ps: maybe it just fits my brain's inner working, I like to see every details before grasping the abstraction.


I don't know the name of this type of learning style but I would eat up a tutorial on Git that started with the plumbing commands like this and worked their way up. I think this is oddly one of the clearest explanations of Git I've ever read. I know that wasn't really the point of the post but still.

Nice. I've been using git at a rudimentary level, but this looks like a decent jumping off point for some more structured learning about the tool. Thanks!

Thanks! That looks like a really helpful working introduction to git. I'll probably start recommending it to git newbies.

I enjoy reading libraries like this because git is seemingly ubiquitous. It’s used more than any project I will ever make. And although I know C and C++, it’s source is kinda hard to approach.

Js on the other hand is not for me so I can get a better sense about how it is that git works. I want to see how these fundamental tools are written so I enjoy these ports (even if they’re not perfect).


You're very welcome to! I had worried it was a little too long, but I'm glad it turned out to be enlightening despite its length.

Git is not without its flaws, but I'm convinced the majority of problems people have with it is because most tutorials on Git seem to focus only on the commands, without giving them any context on how Git actually works. Initially, I had exactly the same problems as you did (and exactly the same disillusionment) until I happened across Git From The Bottom Up (http://ftp.newartisans.com/pub/git.from.bottom.up.pdf). Upon reading that, I also had a lightbulb moment.

Git From The Bottom up is definitely worth reading, but it does tend to be a little too low level at times. So I've been toying around with the idea of writing a "You Could Have Invented Git" article, in the style of You Could Have Invented Monads (And Maybe You Already Have!) (http://blog.sigfpe.com/2006/08/you-could-have-invented-monad...).


That and The Git Parable (http://tom.preston-werner.com/2009/05/19/the-git-parable.htm...) gave me a wonderful understanding of Git.

Damn, that is a very well designed git tutorial! Thanks for the recommendation, this is just what I need.

Agreed. And not only for Git. For basically anything else in programming land you get to have either hands on quick guides or spec listing. There's serious shortage of good, moderately abstract, short overviews of what something actually does and how it does it.

Take Vim for instance. When I first got to it, I found only resources that are paraphrased with "this command does that. that command does that... nth command does that". Now, if only someone described buffers, tabs and windows to me (like in an article that was recently linked to here on HN), or told me that commands can be described as acronyms of verbs and nouns etc. I'd be much more proficient with Vim now.

For Node.js, I found some talks/presentations from its creator that really hit this spot.

I still haven't found anything like that for Git.


This just taught me more than any git tutorial I've read. What a great visualization!

This is how I teach git when I do training sessions for companies. I really dig this approach; the plumbing on top of Git is not really sufficiently abstracted to avoid knowing this stuff, but at the same time it tries to hide just enough of it to end up biting you when (not if) something goes sideways.

Exactly! :)

A good satire about all the "git is super simple" tutorials.


I could use a Git By Example course where we walk through increasingly gnarly gituations.

Agreed, Git Extensions taught me Git visually rather than through a tutorial.

Approaches like these seem packed with mnemonic benefits. As I read, I kept thinking about how I would try to assemble something like this about git, and the result is a really sort of intriguing learning experience.

(any other good examples of things like this?)

next

Legal | privacy