Summary and Schedule
Prerequisites
- Basic familiarity with Git and GitHub (see our introductory course)
- A working local installation of Git
- A local copy of the
reciperepository - Complete the Setup before starting
About the RSE team
Your instructors are part of Imperial’s central Research Software Engineering (RSE) team, whose role is to improve the quality, impact and sustainability of research software. While most of our work is as hired coders and consultants on research projects, we also offer a number of free services, including training courses such as this one and one-to-one code surgeries, where you can get advice and support with software development.
You can find more information about our work and the services we offer on our website.
| Setup Instructions | Download files required for the lesson | |
| Duration: 00h 00m | 1. Course overview |
What will this course cover? In what lesson-style is this course delivered? |
| Duration: 00h 05m | 2. Collaborating with Git and GitHub |
How does collaborative working differ from individual working? What are the challenges of working collaboratively with Git? |
| Duration: 00h 10m | 3. Branching and merging |
How can I or my team work on multiple features in parallel? How can changes from parallel tracks of work be combined? |
| Duration: 00h 45m | 4. Merge conflicts |
What is a merge conflict? How do I resolve a merge conflict? |
| Duration: 01h 05m | 5. Rewriting history with Git |
How can multiple collaborators work efficiently on the same
code? When should I use rebasing, merging and stashing? How can I reset or revert changes without upsetting my collaborators? |
| Duration: 01h 45m | 6. Pulling and Pushing | How do I keep my local branches in sync with the remote branches? |
| Duration: 02h 00m | 7. End of first session | |
| Duration: 02h 05m | 8. Managing contributions to code |
How do I keep my local branches in sync with the remote
branches? What is the difference between forking and branching? How can my group use GitHub pull requests to manage changes to a code? How can I suggest changes to other people’s code? What makes a good pull request review? |
| Duration: 02h 30m | 9. Using GitHub actions for continuous integration |
What is meant by continuous integration (CI) and what are the
benefits? What tasks can be automated in CI? How do I set up CI using GitHub Actions? How do I know if CI runs are passing and what should I do if they are failing? What should I do if I can’t replicate failing runs locally? |
| Duration: 03h 10m | 10. Code versions, releases and tags |
What is a Git tag and how does it differ from a branch? How can I tag commits? How and when should I release a new version of my code? What is the difference between major and minor version changes? How can I effectively communicate what has changed between versions? How can I publish a release on GitHub? |
| Duration: 03h 30m | 11. Collaborative development |
How do I put into practice all the previous knowledge at once? What caveats might I find in a real collaborative scenario? |
| Duration: 04h 05m | 12. End of second session | |
| Duration: 04h 10m | Finish |
The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.
Minimum requirements
Completing this course requires:
- Access to a computer with Git installed
- A GitHub account
- A configured
reciperepository - Be comfortable with using Git
This course is currently being delivered in person and remotely so please make sure you have access to a suitable computer.
Configure your recipe repository
If you have completed our Introduction
to using Git and GitHub for software development course, you should
have a recipe repository in your GitHub account that will
be used in this course. Specifically, in the lesson on Committing
and History from the Introduction course, we discuss how to set up
the recipe repository. Make sure you have a clone of that
repo in your local home directory.
If you have not completed the intro course:
- Download this zip
archive that contains the
reciperepo with some previous commit history that will be used in the session. - Extract it into your home directory.
-
Create
a repository on your personal GitHub account and set it as the
remote for this
reciperepository you have locally.
Important
If you do not know how to set up a remote repo on GitHub, you can follow the steps in the “Configuring a remote repository from a local one” exercise in this lesson from intro course
Install Git
Important
If you do not already have Git installed or are not comfortable with using it for simple version control tasks, you should consider attending our Introduction to using Git and GitHub for software development course first.
Please follow the relevant instructions depending on your operating system.
Configure Git to use your preferred text editor
Many Git commands require you to provide input via a text editor
(though you can often skip this step with additional command-line
arguments). For example, running git commit by itself will
open a text editor to allow you to enter a commit message. Depending on
your OS and how you installed Git, the text editor Git will use can be
any number of things, but is likely to be either nano or vim, which are both terminal-based
editors. It is best to configure your preferred editor explicitly (if
you are using editor for the first time, it is advisable to use
nano).
To view the currently configured text editor, you can run:
(The output may be empty, indicating that no editor has been selected.)
If you would prefer to use a graphical text editor, there is useful documentation on GitHub on how to do this for some common editors.
If you would rather just use nano, you can run: