“We can Fork it before we make any changes to the code.”
The obscure sentence was one of several the two developers exchanged as we were going through a development proposal for a new client.
By the end of the session, it felt as if I had the means to compile an entire dictionary of new words, technical references and jargon - most of which I wouldn’t have been able to understand if we were having this meeting several months prior.
Look, if you’ve frequented the tech scene a bit, or have spent some time in the presence of web developers, it’s likely that you may have heard of “Git”, “GitHub” or “BitBucket” at some stage during a conversation. You may have even come across the adorable GitHub logo of an octopus crossed with a kitten floating around the internet:
If you’re a non-techie, like me, and wondered what on earth ”Git” actually is, then you’re not alone. A recent poll of digital marketing managers discovered that despite whilst more than 80% of them had heard of Git before, less than half could even describe what it did or what it was used for.
In this article, we break down exactly what Git is, and what it’s used for. Then, w will break down some of its associated jargon, so that the next time you’re working with a developer and overhear him say “I’ve just committed the latest changes to GitHub”, you’ll know exactly what he’s talking about.
Like most things tech, the idea of Git is a little intimidating at first but embodies a very simple idea. As described on its website, Git is essentially a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
In other words:
It allows groups of developers to collaborate on the same documents (often source code) simultaneously and without overriding each other’s work.
Have you ever worked on a Word document with somebody else that may be stored in say, Dropbox, only to discover that you both worked on it at the same time? What happens? Often, you override each other’s changes, download conflicting copies or simply lose your collaborator’s work. Git helps developers alleviate all of these issues.
Git also tracks the history of changes to a project’s source code, including what specifically has been changed, who has changed what and when. This is called Version Control.
Version control is “a system that records changes to a file or set of files over time so that you can recall specific versions later.”
It allows you to track what you and your colleagues have worked on so you don’t clash with or override each other’s changes. Even when developers work on each other’s files at the same time, Git’s version control system will inform them that they’re about to overwrite somebody else’s work!
Depending on who you talk to, GitHub can be referred to as multiple different things:
Ultimately, GitHub is all of these things combined and more.
GitHub allows developers to host their files in a ‘Git Repository’ so that other people can collaborate on projects with them, whether they are open for public contribution (open source) or closed for specific colleagues to work on a private project. The idea is not dissimilar to the way Google Docs lets you host your word processing and spreadsheet files and opens them up for collaboration, though developers do not work on the same documents together in real time or make changes directly in the browser.
One of the most common misconceptions about GitHub is that non-technical professionals, such as marketers, perceive the platform as purely a tool for developers. Interestingly, GitHub’s social dynamics and resource-sharing capabilities far more closely resemble that of a social network - and all marketers can appreciate the power and utility of social networks.
GitHub’s thriving community of 12 million+ members can ”favorite” repositories they like, make comments on them, monitor and subscribe to different authors and repositories for updates or simply make a copy of somebody else’s content (source code) and start hacking together their own changes and improvements to them.
Now, that you know what Git and GitHub is, let’s decode the lexicon used in by Git and Github’s most prolific users; developers.
Here our top list of Git and GitHub references with their definitions so that you can impress the pants off your technical team at your next development WIP.
The most fundamental element of GitHub, a repository is essentially a project’s folder, much like the kind of folder you would see in a Dropbox or Google Drive folder.
Repositories store every single project file, its documentation and its revision history of every document. Repositories can also accept multiple private or public collaborators.
Commits are easily one of the most frequented activities by a developer using GitHub. Simply put, a commit or revision is like ‘saving’ an updated file to its original folder and overwrites an older version (though as we already know, Git is great for version control). GitHub, for example describes a ‘commit’ as:
“an individual change to a file (or set of files). It's like when you save a file, except with Git, every time you save it creates a unique ID (a.k.a. the "SHA" or "hash") that allows you to keep record of what changes were made when and by who. Commits usually contain a commit message which is a brief description of what changes were made.” – help.github.com
Clones are literally clones (copies) of a repository that sit on the developer’s computer instead of a server elsewhere.
Clones are great since you can download a code file to tinker around with offline or to be edited in a preferred code editor or integrated development environment.
A branch is a parallel version of a repository (ie; it literally branches out or away from the main repository, kind of like a temporary sub-folder).
It is contained within the repository, but does not affect the primary or master branch allowing you to work freely without disrupting the "live" version.
The beauty about ‘branches’ is that you can merge it back into the master branch when you’re ready to publish your changes.
Fetching refers to getting the latest changes from an online repository (like GitHub.com) without merging them in. Once these changes are fetched you can compare them to your local branches (the code residing on your local machine).
According to help.github.com, a ‘fork’ is a personal copy of another user's repository that lives on your GitHub account.
Forks allow you to freely make changes to a project without affecting the original, enabling limitless opportunities for experimentation and learning from other people’s work.
A forked project also remains attached to the original, allowing you to submit a pull request to the original's author to update with your changes, ensuring you’re always working off a recent or up-to-date codebase.
Pushing refers to sending your committed changes to a remote repository such as GitHub.com. For instance, if you change something locally, you'd want to then push those changes so that others may access them.
Issues unsurprisingly are exactly as they sound. Issues are suggested improvements, tasks or questions related to the repository.
Issues can be created by anyone (for public repositories), and are moderated by repository collaborators. Each issue contains its own discussion forum, can be labeled and assigned to a user.
The role of the Blame feature on GitHub passes ‘blame’ on the version of the code file that resulted in an error occurring. As it states on GitHub:
“The "blame" feature in Git describes the last modification to each line of a file, which generally displays the revision, author and time. This is helpful, for example, in tracking down when a feature was added, or which commit led to a particular bug.” – help.github.com
Merging takes the changes from one branch (in the same repository or from a fork), and applies them into another.
A merge can be done automatically via a Pull Request via the GitHub.com web interface if there are no conflicting changes, or can always be done via the command line.
By now you should be equipped with knowledge of Git and GitHub top terminologies and features of which you should hopefully start putting into practice. Of course, there are plenty of other rich features of GitHub especially, which we implore you to discover on your own.
Git, together with GitHub and other similar services, is what helps drive much of the innovation that makes the internet the productive behemoth it is today. Why not check out Core dna’s GitHub profile and say hi!