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
-
- Why use version management?
- Break (5 min)
-
- Basic commands, part 1
- Break (5 min)
-
- Basic commands, part 2
- End of first day
Day 2
-
- Basic concepts, part 1
- Break (5 min)
-
- Basic concepts, part 2
- Break (5 min)
-
- Traversing the commit tree, part 1
- End of second day
Day 3
-
- Traversing the commit tree, part 2
- Break (5 min)
-
- Traversing the commit tree, part 3
- Break (5 min)
-
- Branches, merges, and conflicts, part 1
- End of third day
Day 4
-
- Branches, merges, and conflicts, part 2
- Break (5 min)
- C: Brief intro to SSH-keys and using GitHub
-
- Working with remotes, part 1
- Break (5 min)
-
- Working with remotes, part 2
- End of fourth day
Day 5
-
- Teamwork, part 1
- Break (5 min)
-
- Teamwork, part 2
- Break (5 min)
-
- 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.
Recommended Textbook and Useful Resources
- Optional
- Pro Git Book, written by Scott Chacon and Ben Straub
- Git, Github and Project Management Tools
- System and Software Tools
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