GitHub

What is it? #

GitHub is a website and service which lets people store their code in the cloud, with a generous free option that has all the features you will need to get started. In simple terms, you can think of it as being like a DropBox for anyone who writes code. But more than being just a place to store code, the value of GitHub lies in its version control capabilities, and open source collaborative community. Particularly in the scientific context, the version control capabilities of GitHub allows for reproducibility, and sovereignty of IP (you can see the history of an idea develop). It is also possible to generate Digital Object Identifiers (DOIs) for your repositories, thanks to the integration with Zenodo, which makes it easier to reference your code repositories in the academic literature.

When to use it #

Whether you are writing code by yourself, within a small team, or even as part of a large collaboration, GitHub can help you to safely and securely manage your projects, and work together with others from all over the world.

Fun fact:
This very website is hosted as a repository on GitHub!

Anyone can contribute!

Getting started #

Using the GitHub Desktop program is a great way to get started with Git. If you’ve never used GitHub or Git version control before, check out the HelloWorld quick start guide provided by GitHub. By following this short tutorial, you will have learnt a number of skills such as:

  • How to make an open source repository (a place where you can store your project)
  • How to make a branch (a type of isolated version of your project where you can make changes without affecting the main project)
  • How to make changes to a file, and “commit” those changes to GitHub
  • How to open and merge a pull request - which pulls the content from the branch you created, into your main project!

Software Carpentry also provide an excellent beginners course called Version Control with Git.

Further reading #

We recommend the following resources to get started with Git and Github: