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
On completion of this series of workshops, participants will be able to:
- 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.
Workshop format
This is a hybrid workshop that runs over 2 sessions. The schedule can be found here. Please note that you will be expected to attend both sessions.
Upcoming course dates
The sessions will be delivered according to the following timetable.
Session | Dates | Time | Venue |
---|---|---|---|
Session 1 | 12 December 2023 | 1pm – 4pm | Old Library Training Room 4 |
Session 2 | 19 December 2023 | 1pm – 4pm | Old Library Training Room 4 |
Registration for this course is handled by University of Exeter Researcher Development (see the Software Training section).
Set-up instructions for attendees
If you have registered for this course you can find the instructions for setting up your computer here. Also take a look at additional resources and supplementary material for the course.
Course notes
If you are unable to attend any of the dates above, the course notes are freely available for you to work through. Please note that you will need to have completed the set up instructions linked above.
Follow-up courses
On completion of this course you will be invited to join a network of other participants. This is a supportive forum for you to ask follow-up questions and receive invites to follow-on courses.
Feedback
Please remember to complete a feedback survey at the end of the course. Our workshops are under continual review and your experiences, suggestions and criticism are invaluable for shaping the direction of this initiative. This is especially important if you complete the materials in your own time, as it enables us to measure impact. If you have ideas on other courses you would like to see then please contact Eilis Hannon: E.J.hannon@exeter.ac.uk.
Join us
If you are interested in becoming part of our community of workshop helpers, leaders and developers please contact Eilis Hannon: E.J.Hannon@exeter.ac.uk.
Acknowledgements
This course was developed by members of the University of Exeter’s Research Software Engineering Group who are enthusiastic about sharing their skills with the wider research community.
If you have benefited in any way from this course and want to support its long term sustainability then please take the time to complete our feedback survey, recommend it to your colleagues, and enthuse about it to your senior leadership team.
This workshop is brought to you by:
- The University of Exeter Research Software Engineering Group
- The Institute of Data Science and Artificial Intelligence
- The University of Exeter Researcher Development Programme
- The University of Exeter Doctoral College
This course has been adapted from Software Carpentry’s Version Control with Git course [1] (retrieved from https://swcarpentry.github.io/git-novice/ and http://erdavenport.github.io/git-lessons/10-branching.html), which is © Software Carpentry and licensed under Creative Commons BY 4.0. Changes have been made from the original content.
References
-
Ivan Gonzalez; Daisie Huang; Nima Hejazi; Katherine Koziar; Madicken Munk (eds): “Software Carpentry: Version Control with Git.”
Version 2019.06.1, July 2019, https://github.com/swcarpentry/git-novice, 10.5281/zenodo.3264950 ↩