6 ms·
It would only take a week to properly learn git. Most people spend a lot more time to learn a programming language or an operating system. I consider git to be
by hasenj 14y ago
It would only take a week to properly learn git. Most people spend a lot more time to learn a programming language or an operating system.
I consider git to be almost like a programming language.
The information model is not complex, it's actually quite simple if you really understand it.
* blob: roughly a file (without a name)
* tree: roughly a dir (maps names to blobs and trees)
* commit: tree + parent commit(s) + meta data (author, commit msg, etc).
If you grok this core data model, a lot of things will make much more sense.
http://git-scm.com/book/en/Git-Internals-Git-Objects http://git-scm.com/book/en/Git-Internals-Git-Objects
I don't know if anyone shares my experience, but I actually found svn rather mysterious and difficult to understand. I never actually saw the point to it at all, so I never bothered using it (unless it was mandated by some authority).
It's only when I understood git that I really understood what version control is supposed to be about.
So, I think people who try to "dumb it down" by giving tutorials that ignore the data model and focus only on the usage are not doing anyone a favor.
Git should be treated like a new programming language or a new operating system. Spend a few days reading (or watching youtube videos) about how it works and why it was designed this way.
Yes, you really have to understand how it works. But it's precisely the fact that you can do so, that make git the best version control system out there in my opinion.
- philwelch 14y ago> I don't know if anyone shares my experience, but I actually found svn rather mysterious and difficult to understand. I never actually saw the point to it at all, so I never bothered using it (unless it was mandated by some authority). There is no point to Subversion or Perforce, unless it's mandated by some authority. The purpose is for that authority, not for you the programmer. That's the essential difference--in P4 or SVN, the authority has version control and you the programmer do not. In Git, everyone has version control.
- crazygringo 14y agoTaking a week to learn a computer utility seems insane to me, I think that's one of the problems. People just want some version control, they don't want to learn a whole programming language to have to do it. Imagine if I had to spend a week learning how to configure my screensaver, set up hard drive backups, or install Dropbox? Forget about it. Now if git were only popular among super-power-hard-core programmers, then I don't think there would be any criticism. But it's the fact that it seems like pretty much everyone has switched to git now, because its advantages are fantastic, but it takes 100x longer to learn than any other tool I've ever used.
- hasenj 14y agogit is not just some other utility. The comparison to screen savers is not adequate. git is an advanced system tool meant for software engineers. That's why I compare it to a programming language or an operating system. Also, the return on investment is huge. I think that time spent learning git is time well spent.
- chris_wot 14y agoI would argue that you aren't learning a computer utility, but rather learning how distributed version control works. I honestly can't find anything in the author's post that doesn't make sense for DVCS.
- MBlume 14y agoOh come on. Your language, your editor, and your source control. Three things worth knowing backwards and forwards if you're going to call yourself a developer. Three things easily worth spending a week grokking, if necessary.
- aneth4 14y agoAnd then there's the thousands of libraries, debuggers, versions, deployment choices, design strategies, etc etc. Development is an endless path of learning, and git is barely learnable. And editors don't take a week to learn because you don't have to learn everything to use them. Even vi works quite well with just a few commands, and you will never NEED anything other than those, only optimize your usage.
- chris_wot 14y ago"git is barely learnable" - hardly!
- aneth4 14y agoThe fact that even experts admit they don't understand the array of options and implications for commands like reset and rebase would tend to support me here. And there is always dispute about the best way to do something as simple as back out a commit or clean large old files from a repository (very difficult with a large team). The series of incantations to do such things is always ridiculously obtuse, with non-intuitive flags and symbols. Sure the basics are learnable, and google can often reveal solutions (though rarely definitively), but I know no one with a comprehensive understanding of the majority of git fundamentals.
- cturner 14y agoAnother concept users need to understand is the index. That causes confusion if you don't understand the idea that there's a cache in between what's checked in and what's on your disk.