---
title: Course plan 2024
tags: Internal
description: Initial plan for the course flow
---
# Course plan
Materials for the instructors (scripts and exercises) can be found from: https://github.com/hpc2n/intro-git
## Lectures and exercises (modules?)
0. Setup ([markdown](https://hackmd.io/Qt5d-4ynQUCcSr-aQkHhnQ), [slides](https://hackmd.io/@git-fall-2024/L0-setup)) *--- Birgitte*
- Everyone:
- Installs Git
- Creates a repository with `git init`
- Sets their name and email with `git config` (local, global, system)
- Creates a file
- Adds the file with `git add`
- Commits the file with `git commit`
- Everyone
- Clones the course materials
- Everyone should now have functioning Git installation
- Do this on kebnekaise only if people do not have a functional git on their own computer
- Setup an account at GitHub
1. Motivation ([markdown](https://hackmd.io/pS1dDQH3RYGzHJ2K1ChW0g), [slides](https://hackmd.io/@git-fall-2024/L1-motivation/)) *--- Birgitte*
- In HPC in particular (batch files, certain type of results, etc)
- **Exercises**: None?
2. Basics commands ([markdown](https://hackmd.io/VBxdwReESa2m8FH-L56mFw), [slides](https://hackmd.io/@git-fall-2024/L2-commands)) *--- Pedro*
- Different ways to create and clone a repository
- Adding files
- Whole file, changes to a file, partial
- Working tree, index / staging area
- Staging and un-staging
- Renaming, deleting
- Committing
- .gitignore
- **Exercises**:
- Create a repo, create a file, stage the file, commit (repeat with knowledge)
- Partial staging
- Move files around and commit
- Several hands-ons so that people understand the difference between the working tree, the index / staging area, the commit tree and the stash). People should really get this.
3. Basic concepts ([markdown](https://hackmd.io/4PVeqIrFTgaUV2z7Nhetgg), [slides](https://hackmd.io/@git-fall-2024/L3-concepts)) *--- Birgitte*
- Blobs
- Content-based addressing
- Files
- Trees
- Directory tree
- Working tree
- Commit tree
- Commits
- Author, committer, …
- References (Refs)
- Simple, symbolic
- Tags?
- **Exercises**: None?
4. Commits ([markdown](https://hackmd.io/eGIMSfRyQg60sjVVqApsqg), [slides](https://hackmd.io/@git-fall-2024/L4-commits)) *--- Diana*
- History / log
- Tags
- HEAD
- Navigation (~, ^, .., etc)
- Diffs
- Reset
- Discarding commits
- Changing commits
- Amend, revert, …
- Recovering the head
- Stash (with --keep-index as a part of a recommended workflow (p. 55))
- Rebasing? (Might be too advanced topic)
- Bisect
- This could really sell the idea to some!
- **Exercises**:
- Modify a repository in two different ways, create two commits, ... Should use git stash --keep-index.
5. Branches ([markdown](https://hackmd.io/9Bo03fUPQHiAAN75O3sLGw), [slides](https://hackmd.io/@git-fall-2024/L5-branches)) *--- Diana*
- Why use branches?
- Basics concepts
- Creation, deletion
- Switching (uncommitted changes etc)
- Visualization
- Uncommitted changes…
- Stashing, discarding
- Conflicts
- Rebasing
- Merging strategies
- Cherry picking
- **Exercises**:
- internal-examples/discard-local-changes
- Requirements: **git pull**, git diff HEAD origin/master, git stash *, git reset --hard HEAD~, git checkout -- file.txt
- Idea: Repeated exercise first with a local branch and then with a remote branch? One as an example, one as an exercise?
6. Working with remotes ([markdown](https://hackmd.io/IdGDhI2oQuepo48r-Lg_sg), [slides](https://hackmd.io/@git-fall-2024/L6-remotes)) *--- Pedro*
- Basics concepts
- Pull, push, fetch
- Tracking
- Several remotes?
- Using GitHub
- ssh keys
- Good “manners”
- When to use revert, rebasing, etc
- **Exercises**:
- internal-examples/merge-rebase
- Requirements: git status, git diff, git add, git commit, git push, git pull, git log, git reset --hard HEAD~, pull --rebase
- Rebasing small commits into larger ones and pushing them to remote(
7. Teamwork ([markdown](https://hackmd.io/pzI6XXaXRVKKKhnPx5dJ3w), [slides](https://hackmd.io/@git-fall-2024/L7-teamwork)) *--- All*
- Work in small teams?
## Advanced topics
- Tags / Releases
- GitLab, GitHub
## These should go somewhere:
- Other stuff
- Git on Windows. git-scm.com etc.
- GitLab, Github, Bitbucket webpages. How to use them. Keys and key security issues.
- Graphical interfaces to Git, tools for Git (Git kraken, ...)
## Preliminary schedule
(Should be broken into four half-days for 2021)
| Time | Description |
|------|-----------------------------------------|
|09:00 | **0. Introduction and setup**
|09:30 | **1. Why use version management?**
|09:55 | Break (5 min)
|10:00 | **2. Basic concepts**
|10:55 | Break (5 min)
|11:00 | **3. Basic commands**
|12:00 | Lunch break (60 min)
|13:00 | **4. Traversing the commit tree**
|13:55 | Break (5 min)
|14:00 | **5. Branches, merges and conflicts**
|15:00 | Coffee break (30 min)
|15:30 | **6. Working with remotes**
|16:25 | Break (5 min)
|16:30 | **7. Teamwork**
|17:30 | End of the course