Introduction to Version Control

Introduction to Version Control#

Overview#

Version control systems are an incredibly valuable tool for organising software development. They are essential for producing reproducible and transparent research software, coming into their own for facilitating collaborative work. This course will give an introduction to Git, one of the most widely used version control systems in academia and industry. It will also give an introduction to internet platforms such as GitHub and GitLab, which are built on top of Git and designed to facilitate collaboration between software developers and the sharing of code. A key component of the course will be hands-on practice using Git and GitHub, working through theoretical concepts that will be explained with the aid of live demonstrations. By the end of the course, it is intended participants will be comfortable using the basic features of Git and GitHub to keep a record of their day-to-day code development and share their work with others.

Course Objectives#

  • Use Git to manage their software development.

  • Explain what repositories and commits are in Git.

  • Apply standard Git commands as part of their development workflow: cloning, pulling from and pushing to repositories; adding and committing file changes.

  • Give examples of what should and should not be included in Git repositories.

  • Describe how Git and platforms like GitHub and GitLab relate to each other and their differences.

  • Understand how to share their work with others and/or make it publicly available through GitHub.

  • Have the confidence to learn more advanced features of Git and GitHub as required for their work, such as working with branches and pull requests.

Pre-requisite Knowledge#

A willingness to work with Git and GitHub in a hands-on way throughout the sessions.

Basic familiarity of working at a Unix command line (e.g. Apple Terminal, a terminal running Bash) is helpful but not essential. We have included a cheat sheet on basic commands that will be useful for this course on the resources page. A good introduction to this topic more generally can be found at the sister course Introduction to Unix Shell.

Version control systems are primarily used for source code development, so experience writing some code (e.g. R, Python, LaTeX, bash scripts, C,…) is helpful though not essential.