Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I teach courses on Git, and I couldn't agree more. Many of my students have been told that Git is simple, and they just need to know 10 commands. Or they can think about it like SVN. Or that they should push, pull, and that's about it.

Which has the effect of (a) making them fear Git, (b) making them feel like they'll never figure it out, (c) and convincing them that they're always on the verge of losing data. I've literally had students at the start of my course refer to Git as "that system that makes me lose files."

Once I teach people about Git's objects and data structures, things suddenly become much more obvious to these people. Git becomes less of a mystery.

I'm not saying that Git is easy for people to understand or use, because it isn't. It has a steep learning curve -- one which I think is worth the effort. But I think that it does a disservice to Git newbies to try to summarize all of Git's functionality in a short essay, and then proclaim, "See? There's not that much to learn here!"



Agreed: attempting to teach that git is simple does people a great disservice.

To be very effective and safe using git, you really do need to understand a bit about its inner workings. I find that to be a big weakness of the tool, and it continues to surprise me that it's become as popular as it has. I personally like git a lot, and find it to be very powerful, but it took time and an interest in deep learning to get there.

I can certainly understand that most people might want a simple VCS that's easy to use and makes it difficult to screw up. Git is not that VCS, by any means.


I would be grateful for your course. I've used git now for 3+ years and still don't feel like I understand Git's objects and data structures. Maybe it's because I didn't finish my PhD.


Finishing a PhD gives you bragging rights, but it doesn't make you any smarter! (Believe me, it took me 11 years to do mine... and I've got the bills and emotional scars to prove it!)

I might start to teach courses online at some point, but I'm right now so busy with in-person classes in Israel and China (with a bit in Europe probably happening soon) that I haven't had a chance to consider it. But hmm, maybe...

Meanwhile, see my above reply with some suggested resources to learn about and understand Git. I hope that they'll help.


Take a look at Git from the inside out [1]

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


That's very helpful, thank you. I'm embarrassed I missed that this was linked from the 600 word intro essay, it's by the same author.


If you already have some familiarity with Git, you may find this 2-page reference poster[1] helpful if you need a cheatsheet at your desk.

[1]: https://www.dropbox.com/sh/quumaubjftxik1u/AAD15CT1UrNyOuYSx...


Where is this from? It looks like one of Ange Albertini's posters.


I made it. Started out as a powerpoint and morphed into a poster.


Do a google video search for a presentation called "Git Happens" (by Jessica Kerr). The presenter does a really good job of digging into the data structures.


You don't need a course. All you need is to watch the presentation "Git For Ages 4 And Up" https://youtu.be/1ffBJ4sVUb4?t=10m32s


It may be an issue of terminology.

I personally think git is simple. That doesn't mean it's easy. The issues listed in the GP comment seem to me mostly social. I think the most common problems with git stem from a more general difficulty in working with a branching, asynchronously developed codebase.

About merges... I think rebase is ridiculously overused, and people should use merges more. Clearly a feature branch littered with spurious merges is bad, but often it seems that this is taken simply to mean that merges are bad, and I get the impression that people go to ridiculous lengths with rebase etc. just to preserve an illusion of linear history even in cases where merging would be better.


Could you recommend some better online resources for learning git?


I have a whole "Git" category on my http://DailyTechVideo.com/ site, which are some of my favorite intros to Git.

Of these, my particular favorite is Michael Schwern’s “Git for ages 4 and up." Watch this, and suddenly Git will make a ton of sense. Jessica Kerr's talk about Git is a close second; it's remarkable for telling us about how Git thinks about things without showing any code.

One of my favorite tools to use in my Git course is this site:

http://www.wei-wang.com/ExplainGitWithD3/

which graphically shows what happens when you commit vs. change branches vs. rebase. Super cool stuff.

If you go through the two of these, and if you understand them, I think that you'll have about 90% of what you need to then re-read a Git introduction, and have things make sense.


I have to laugh a little at this. You just said, "Go through these 2 tutorials, and try out this tool, and then you'll be able to re-read the introduction and understand it (90%)!" I've learned Source Safe, Perforce, and svn in a matter of hours without having to re-read anything. It's absurd to have to watch 2 tutorials and read an additional book twice to understand something that you should basically already understand. Someone really needs to fix this!


I'm not saying that it's necessarily good that using Git basically requires understanding its data structures. But Git is hard to learn, and often hard to use, and surprises people who use it.

The best solution to this problem, I've found, is for people to learn how Git works. Once that happens, everything else falls into place, and their lives are much easier.

So is it ridiculous that you can only understand the Git documentation and tutorials after you understand the data structures? Yes. But Git isn't going away, and if we want people to succeed with it, then we need to help them to learn it, rather than castigate them for using a tool that they need to use for their work.


A voice of reason - thank god!. I really don't see why I versioning system needs to be THAT complicated FFS!


Seconding "Schwern’s “Git for ages 4 and up." I keep returning to this video, despite its length (content starts at 6:42).

Tinker toys really do make great graph visuals!


Just watched it, I have to agree, it made a lot things clear that I just didn't understood before, like detached HEAD.

Here's the youtube link: https://www.youtube.com/watch?v=1ffBJ4sVUb4



My favorite resource is a long but clear blog post. http://wildlyinaccurate.com/a-hackers-guide-to-git/

Alternatively, you could attend Recurse Center and sit through one of Mary's excellent git workshops. :)


given that you teach it in-person, I feel that if you were to take the time to write an essay you would automatically bring up the hurdles and a lot of people would find it useful. why not go ahead! You can summarize/start here if you want, we'll give you feedback :)


You're totally right. I'll add this to the list of posts that I really want to write on my blog. I've got a crazy week coming up, but I hope to be able to push out a few posts after that. (Plane trips to/from China are very useful for catching up on reading, writing, and movies...) Thanks for the encouragement!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: