They’re everywhere. When you come and visit someone’s site whose focus is on web designing and development, one of their social media links happens to be a GitHub account. When you come and visit official sites of your favorite web scripts such as WordPress and anything else similar, you will see that their organization has a GitHub account. I have a GitHub account too.
And from the standpoint of a hobbyist web designer/developer, you probably have never heard of it or neither have a care for it. Understandable.
From the web design and development classes I took in the past, I did take a class 1 on this project configuration management system thing known as version control. Some also call it version control or source control. There is an in-depth Wikipedia article about version control for further information regarding its history and its purposes and the reasons why many software developers, web developers, technology corporations, related non-profit organizations, and even individuals use/have one. From this point, I’m writing about why I have a GitHub account and why I use version control for my projects.
There are four types of version control systems that are existing today: Git, 2 Mercurial, 3 Subversion/SVN, 4 and CVS. 5 Because the version control class I took primarily focuses on Git (and GitHub), this is the only version control system that I’m most familiar with. But in any case, let’s proceed.
Why do we need a version control system for our projects?
When I say projects, I mean any one (or all) of the following:
- software/scripts
- websites (all files including image and script files)
- documents (Word files, Excel files, PDF files, eBooks, etc.)
- PSD files, AI files, any editable art/graphics files that can be accessible by anyone
Although version control systems are more popular with software/web developers than anybody else, they can also be used by anyone handling any one of the above-mentioned. Designers, artists, accountants, secretaries, journalists, and writers can use them too. 6
Version control will help us do the following (and probably more):
- Save updates and revisions of the projects we’re working on. When we make a revision and we mess up and try to get the original features again before we made the change, we can always go back to the older version (all the way to the original). If we have more than one version of a website layout (for example), we can create branches and save those other versions and have others check/comment on them (through “pull requests”).
- Have others help out and contribute to our projects. For writers who want to show everyone their drafts of their book, those who contribute would be able to correct revisions or comment on certain parts they feel the need to be changed, etc. For (digital) artists who want a few early critiques on their PSD or AI files, contributors can download your files, make a few changes and add notes (commit) to their changes, and push it back to the original repository.
- Somewhat related to the one above, copying (forking) the original code from the original source and then expand or create a new similar project based on that codebase is a lot easier through a version control system. (assuming that codebase is an open source project. Otherwise, you’d be stealing proprietary code and get sued.)
- For learning/educational purposes, it’s also an easy way for teachers (and other classmates) to come and take a look at your project, and share their comments and thoughts about your project.
- The safest way for anyone to download your script files instead of uploading them on your own web server. Most individuals and organizations would lead you to their GitHub/Bitbucket account if you click on the big Download button that you see on their official website. In case the web server crashes, the GitHub account is still intact and you can read all about that particular project through their README files and download the script with no hassles.
- For anyone entering the technology field, whether if you are a web developer, software engineer, web designer, etc., a GitHub or a Bitbucket account can be used as a substitute for your resume and cover letter or an extension to your portfolio or your LinkedIn account. You’re not even required to upload your own work (or you can upload just a few working files of an unfinished project), but if you are participating in other projects as a contributor, that counts too.
- If you think DeviantArt as a social media for artists, GitHub and Bitbucket are the developers/programmers’ version of it.
Here is a short video from the folks at Git the clear explanation of what version control could do to help you and your projects.
I’m considering having my own version control system for my project(s). What do I do?
You can sign up for a free account on GitHub (currently the most popular version control service) or Bitbucket (if you also decide to use Mercurial instead of Git) and start uploading your projects. 7 You can upload, edit, and work on your files from your computer’s command line console (provided that Git and/or Mercurial are installed in your system), web-based (by logging in your GitHub/Bitbucket account), or even a desktop client (if you don’t dig the whole command line console bit).
Just a few things that you also need to start working on your version control system of your choice:
- Markdown (text files and documents that will go to your GitHub/Bitbucket will all be written using Markdown. I got a handy tutorial in case you’re unfamiliar with this.)
- Git/Mercurial Commands (if you want to get all technological hardcore by using the command line console. There’s plenty of free tutorials out there.)
- (Optional) Desktop Client (there are plenty out there. GitHub’s desktop client and SourceTree are the notable ones you can check out.)
- GitHub and/or Bitbucket Account (to store all your project files and have everyone else join you)
I plan on writing a short tutorial of sorts with GitHub, even though there are plenty of them out there. Maybe I could make it a bit more understandable to those who might get confused. When I start, I may probably be focusing more on the command line console version. I use a combination of command line, web-based, and desktop client (I have SourceTree), but I mostly use the command line. 8
Do I have to have one?
Having one is optional if you only have personal projects or side projects. You don’t need to have one if you don’t plan on sharing your “work in progress” projects to the world. You don’t need to have one if you don’t plan to have other people help out/contribute to your projects. Or, in the case of GitHub, you can have an account, but you’ll have to pay if you want your projects hidden from the public except for a few chosen people. In the case of Bitbucket, you’ll have to pay extra if you want a certain number of people to contribute to your projects, regardless if they’re public or private projects.
I signed up for a GitHub account at first, for educational purposes. 9 But the more I learned about Git/GitHub, I found that having a version control system for my projects beneficial. I won’t have to panic with my mistakes anymore because Git/GitHub already saved my previous changes before I made those booboos. And of course, if I were to build something awesome with a group of people (like a collaborated website, for example), a version control system would really help me and my friends build that something awesome together without the hassle of FTPs or sending stuff via emails.
And finally, I plan on using my GitHub account as an extension of my resume and LinkedIn when I finally start applying for web development-related jobs. I just need to let it grow first and gain more experience before I make that big leap.
That’s it for my little introduction to version control systems. I’ll write more about this (more specifically Git/GitHub) in the near future. 😊
On the sidenote…
- It’s required to learn during my time at Skillcrush anyway. ↩
- probably the most popular version control system today ↩
- probably the closest competitor to Git because it’s almost similar… ↩
- Probably one of the oldest version control systems already existing. We used to see an icon of this in our hosting cPanels before. ↩
- Recorded as the oldest version control system existing today, older than the previous three. ↩
- In fact, that’s not a bad idea. I should start using my GitHub more to upload my original fiction LOL. ↩
- In Git/Mercurial terms, they call those projects as repositories (or repos for short). ↩
- Because my Git class from Skillcrush are all command line-based, so I got used to the command line. ↩
- Skillcrush requires all of us to have one. ↩