Andrew's Blfog

Version control is a rare tool that I would say is absolutely required, even if you are only using it as a solo developer. Some people say that it's a tool that you live and die by, I agree with that assertion.

~ Robert Venables, September 2009

Version Control is a dummy useful class of software that has helped me out countless times. Atlassian has a pretty good overview of what it is and how it generally works.

For the uninitiated, it's basically where you use a software to semi-manually keep track of changes you make to code, text, or anything really. It will see that a file has changed, you type in a comment to help you remember what you changed, then you save it to a "repository" where you can recall every single change you've recorded. Usually, this repository will be hosted on a server, like GitHub or GitLab or whatever, but it's not a hard requirement.

You may be asking yourself why you would want to use a version control system for a simple project like your personal website, or highly-advanced text editor, and the answer is simple: Even if you think you don't need it, you will undoubtedly run into a day where you do need it.

Anything can be version-controlled, although text files are the ideal target. It doesn't have to be code - you can version-control word documents, powerpoints, images, shopping lists, drawings, videos... the limit is how much hard drive space (and how much repository space) you have at your command.

I never thought I'd be sharing the ClassiCube website code with anybody - but because I used version control, I was able to invite collaborators to help.

I never thought I'd need version control for my blog's theme, but doing so from the start allowed me to revert huge parts of the code instantly to a working version when I realized I had made a mistake.

The industry standard is Git, and it's notoriously difficult to use so I wouldn't blame you for wanting an alternative. SVN is considerably easier to use, but is far less useful in large collaborative efforts, and support for SVN is waning. Luckily, finding an SVN host isn't too hard because GitHub supports using an SVN client on their repositories. The GitHub docs expect you to be using a command-line SVN client, but if you're choosing to use SVN you'll probably want a graphical user interface such as TortoiseSVN

With that said, you're probably best off just using Git and getting used to it, especially if you ever think you might join the tech world. Even non-engineering jobs will have you interact with git in some capacity, and having it under your belt already is a huge plus.

It's highly recommended you learn the command-line basics for Git before using a client, so you have some understanding of what's happening behind the scenes. Once you have that understanding, tools like Sublime Merge are extreme time savers, where often complex operations are simplified down to a couple clicks at most.

Version control your crap!