As a student (more specifically a comp sci student), I’m always coming across new frameworks and tools that claim to create new or improve upon existing technology. A lot of times my research into these unknown technologies ends up being nothing more than a simple Google search that 99% of the times leaves me at the Wiki page. I read a couple paragraphs, try to figure out how it could benefit my life, and end up just tucking a teensy bit of “metadata” in the back of the head for later reference. Every once in a while one of these tools/frameworks really strikes me as one that is worth the time learning… usually because its something that can be utilized in so many different projects… whether education, business, or even pleasure.
Believe it or not, Git, a version control system, is proving to be one of those technologies. In case you’re tempted to navigate away, either because you get a bad taste in your mouth when you hear “version control” due to Subversion and CVS or because it sounds completely irrelevant to your life, hear me out. I also feel obligated to say that this is not new news. If you’re an accomplished programmer it’s very likely you’re familiar with and, of course, use Git.
For those not familiar with version control, it’s a way of doing exactly what it sounds like… control versions of /backup documents, files, etc. It’s primarily used for source code collaboration among programming teams, but it is also very valuable for others. I’ve actually heard of authors using Git as a(n invaluable) tool for managing their book writing.
As a student, I’ve been exposed to other version control systems such as CVS and Subversion mentioned previosly. Both are of value, and can be somewhat easy to use, but what’s always the issue/excuse that I have for not using it? It’s too complicated to set up. You need to set up a centralized server, and it requires lots of complex syntax (that requires more than a few extra Google searches). There’s value to having your own personal version control for sure, but it just doesn’t seem worth setting up a server just for your own use, right? (see this article from slashdot for more in-depth comparison)
Say you’re creating a personal website from scratch. Like anything, this will likely require a good deal of trial and error, especially if you’re not 100% confident with what you’re doing. You start with a stable working webpage, make a tweak, break it, and start over. You “learn” from your mistake and come up with your own system of safe-guarding yourself against yourself… manual backups and renaming schemes. Before too long, you may end up with some crazy and super disorganized mess as you see below.
You become hesitant to make any changes for fear of breaking things. You end up with duplicates/versions of entire directories that contain backed up directories that are backups of already disorganized backup projects. You start to hate web-development, computer science, and in turn, all of your friends that like computers.
Git provides you with a simple streamlined way to manage your projects on your local or remote machine with little to no fuss. Reached a stable point? Commit, tag, and/or branch using Git. Make a change. Does it work? Merge and commit. Broke things? Revert to the main branch and try again. It’s available cross-platform, and it’s open source. The simplest way is to use a command line, but several GUI’s (for Mac users, try GitX) are available. You can download Git here and get a simple (official) tutorial here. Check it out when you get some time… I don’t think you’ll regret it. Should you have any questions, feel free to leave me a comment below.
Hope the Thanksgiving holiday treats you all well! Cheers