Skip to main content

Introduction to Git, Github and Project Management Tools

Module Overview

Version control is an essential skill for developers to learn. Git is the most popular version control system and GitHub is the industry-standard tool for collaborating on and sharing code. Students will be introduced to the fundamental concepts of the Git architecture and using Git to manage code. Students will learn from basic to advanced Git commands to track modifications to a source code repository and collaborate on a shared codebase, how to use Github ecosystem to enhance their project management workflow, and other project management tools. At the end of the module students will be able to add and delete files in the repository, commit changes, create branches, merge pull requests, check logs and handle merge conflicts. Students will also learn advanced features such as cherry-picking, rebasing, adding multiple remotes, creating Github actions to automate the procedures, exploring existing open source projects on Github, making contributions, and using Kanban boards to track progress.

Preliminary schedule

This module will be an introduction to version control, with a strong focus on Git. Some of the main concepts, like repositories, commits, trees, branches, and merges will be covered, as will many of the basic commands, like clone, add, push, pull, commit, and fork. We will also go one step beyond the basic concepts and explain the fundamentals of how commits and branches can be manually created by using so-called "plumbing" (low-level) subcommands.

The lesson will be complemented by demos, as well as hands-on, during which the participants will learn both how to do simple Git commands as well as more complex cases. The hands-ons will mainly be done using GitHub.

Day 1

  • B: Optional installation help (Git)
  • Introduction and course info
  • A: Setup
    1. Why use version management?
  • Break (5 min)
    1. Basic commands, part 1
  • Break (5 min)
    1. Basic commands, part 2
  • End of first day

Day 2

    1. Basic concepts, part 1
  • Break (5 min)
    1. Basic concepts, part 2
  • Break (5 min)
    1. Traversing the commit tree, part 1
  • End of second day

Day 3

    1. Traversing the commit tree, part 2
  • Break (5 min)
    1. Traversing the commit tree, part 3
  • Break (5 min)
    1. Branches, merges, and conflicts, part 1
  • End of third day

Day 4

    1. Branches, merges, and conflicts, part 2
  • Break (5 min)
  • C: Brief intro to SSH-keys and using GitHub
    1. Working with remotes, part 1
  • Break (5 min)
    1. Working with remotes, part 2
  • End of fourth day

Day 5

    1. Teamwork, part 1
  • Break (5 min)
    1. Teamwork, part 2
  • Break (5 min)
    1. Team work, part 3
  • End of the course

Course project

As part of the hands-on, you may be given temporary access to a module project, which may be used for running some of the hands-on examples.


summary

  • Lecture A, course info: Lecture-A-Course-info.md
  • Lecture B, information for those using Kebnekaise for the hands-ons: Lecture-B-Using-Kebnekaise-for-the-Git-course.md
  • Lecture 0, setup: Lecture-0-Setup.md
  • Lecture 1, motivation: Lecture-1-Motivation.md
  • Lecture 2, basic concepts: Lecture-2-Basic-concepts.md
  • Lecture 3, basic commands: Lecture-3-Basic-commands.md
  • Lecture 4, the commit tree: Lecture-4-Commits.md
  • Lecture 5, branches: Lecture-5-Branches.md
  • Lecture 6, working with remotes: Lecture-6-Working-with-remotes.md
  • Lecture 7, teamwork: Lecture-7-Teamwork.md