GitHub. Until early last year I, like a lot of people, had heard of Github but wasn’t exactly sure what it was or what it was used for. Then, as I explored my Raspberry Pi and some modules on Codecademy.com I became increasingly aware of its presence and importance. To describe Github in the shortest terms it is a website – an online repository. In longer terms, it is a version control repository for information (primarily code and Wikis) and an internet hosting service.
The first part of GitHub’s name pays homage to Git – a program used for software development. Git is a Version Control System (VCS) or put simply a tool to save versions of your code often developed in collaboration with others. Git is distributed as free software and once installed it acts as a full-fledged local repository that records the changes you make to a project, stores those changes, then allows you to reference them as needed. This can be performed independently of network access or a central server. Primarily, Git is executed within the Command-Line and is capable of tracking changes in any files. I got basic familiarity with Git by completing the free codecademy.com ‘Learn Git’ and ‘Deploy a Website’ courses in which the latter courses also utilizes GitHub.
Github is kind of like the online version of Git with a whole bunch of other features that you use within your web browser. It is also classified as a ‘Version Control Repository’ as opposed to the ‘Version Control System’ that is Git but they can work hand in hand. A good example is website deployment. In this instance you could take a small website you have built and use Git to ‘push’ the files and any future revisions for that website up to your own repository on Github. You could then make that repository private or public and allow other users to ‘pull’ code or files from your repository. As Github is hosting your code and files and the complete history of your revisions it is acting a hosting service.
Because of the public nature of Github it has become a great platform for individuals, communities and businesses to release open-source software projects – open source meaning that anyone can modify and redistribute it. In addition to hosting a hell of a lot of source code Github also offers social-networking like services such as feeds, followers and Wikis. I have used Github Wikis (walkthrough guides) on numerous occasions in learning how my Raspberry Pi works. In upgrading or downloading new content for my Raspberry Pi I often find the source of the content originates in Github.
Github can be a bit overwhelming the first time you encounter it. Fortunately, there are a lot of resources out there to help you understand Github’s full capabilities. Beyond this blog I think one of the best places to start is Github’s own 10 minute walkthrough that will teach you essentials like repositories, branches, commits, and Pull Requests by creating your own Hello World repository. Beyond that I suggest doing the short ‘Learn Git’ and ‘Deploy a Website’ courses available for free on codecademy.com. These are great step-by-step guides that will help you contextualise Github. Once you know it you’ll have a great resource for contributing to the open-source, development and mentoring communities out there.