Git, the tool you can't live without.

Although I've been using Git for about 18 months, I only recently got into really learning how it works. For those of you who don't know what it is, Git is a distributed revisions control system. That means that it keeps repositories that contains many revisions of projects you are working on. And unlike RCS:s before it, it doesn't require a central repository in order to work on many machines across the net.

Git and RCS software in general is one of those things that you don't know that you need before you get used to using them. I could see the value of the idea of being able to browse previous versions of something, but I had quite some trouble getting any benefit out of it. I think this is common because we develop lots of small things we do to compensate for not having Git. For example, I used to always comment out code that I wanted to remove, but that might be useful somewhere else, or that I might be going back to if the new code didn't work. This left a lot of out commented code everywhere. With Git, this is completely unnecessary, you can just remove it, and your code will be much cleaner. If you ever need it, you can just revert to an old version, or just copy/paste it from an old commit.

Git in itself is quite tricky to learn. It uses a lot of technical solutions that are hard to understand unless you understand how the underlying system works. I hear that for instance Mercurial is designed more with ease of use in mind, but is otherwise very similar to git.

It is in my opinion worth it to learn at least one of the DRCS:s. Probably one of the following: Git, Mercurial or Bazaar. If you do any sort of coding or mark-up writing I consider it an essential skill, but even if you do other forms of writing or design. Granted, Git is of limited use for Office docs or images, since it's not really designed to work with binary files, but it it does work on binary files as well. I suppose this goes a little bit like the old saying "if all you have is a hammer, everything looks like a nail", but I'm starting to find Git so immensely useful that I want to use it in almost all of my projects. If I where to write a book, I would use Git to revision it. This would motivate you to write it in a non binary format, like LaTeX, or DocBook, which in itself would be a good thing.

I'm quite aware that most people don't go out and learn Git just because, and giving the learning threshold, even if you decide to do it, you will probably give up before finding it very useful. But if you did, I believe the world would be a better place for it. And Git is one of those open tools that allows you to get back control over your projects. I think Google docs is great, but if you use it, you're pretty much stuck with it. There's no easy way to migrate your data off the Google servers, and continue your project in the same way.

If you, like me, mostly develop things alone, the value of Git as a tool is not really that apparent straight away. But as soon as you start working with someone, it all just clicks into place.

I was planning on writing a little bit more about the inner workings of Git and not a huge fanboi rant about how great Git is, but it just came out this way. If you are interested in learning to use Git, you can find a pretty good (free) book about the subject on https://git-scm.com/book/en/v2. And if you can't run your own server, Bitbucket is pretty good, as well as GitHub for Open Source projects.