Further Git and GitHub for Effective Collaboration

Prerequisites

  • Basic familiarity with Git and GitHub (see our introductory course)
  • A working local installation of Git
  • A local copy of the recipe repository
  • 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.

Schedule

Setup Download files required for the lesson
00:00 1. Course overview What will this course cover?
In what lesson-style is this course delivered?
00:05 2. Collaborating with Git and GitHub How does collaborative working differ from individual working?
What are the challenges of working collaboratively with Git?
00:10 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?
00:45 4. Merge conflicts What is a merge conflict?
How do I resolve a merge conflict?
01:05 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?
01:55 6. 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?
02:30 7. 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?
03:10 8. 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?
03:30 9. Collaborative development How do I put into practice all the previous knowledge at once?
What caveats might I find in a real collaborative scenario?
04:00 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.