# Coordinates
- Date: 6th of September 2017
- Time: room is booked between 9:00 - 17:00
- Location: J1-84 


# Teachers
- Bowo
- Jeroen
- Jonathan
- Mihai


# Audience

| Department                                 | Organization                |
|--------------------------------------------|-----------------------------|
| Human Genetics/ Bio -IT                    | LUMC/GenomeScan             |
| Human Genetics                             | LUMC                        |
| Hematology                                 | LUMC                        |
| Cell biology                               | EMC                         |
| Hematology                                 | LUMC                        |
| Molecular Cell Biology                     | LUMC                        |
| Ouderengeneeskunde                         | LUMC                        |
| Ouderengeneeskunde                         | LUMC                        |
| KNO                                        | LUMC                        |
| molecular genetics                         | EMC                         |
| Radiology                                  | Netherland Cancer Institute |
| Hematopoiesis                              | Sanquin                     |
| Molecular Epidemiology                     | LUMC                        |
| Dermatology                                | LUMC                        |
| Directorate Education and Study Programmes | LUMC                        |
| ?                                          | Leiden University           |
| ?                                          | Leiden University           |
| Dermatology                                | LUMC                        |


# Previous course detailed program

## Introduction (9:00 - 9:30) - Jeroen
- version control definition
- motivation
- repository types:
  * local
  * distributed
  * centralised
- git history
- GitHub and GitLab as central remotes
- GitLab demonstration
  * logging in
  * landing page
  * profile settings
  * projects

## Practical (9:30 - 9:45)
- local configuration
  * user.name
  * user.email
- remote configuration
  * ssh key generation
  * add ssh key to GitLab

## Git basics (9:45 - 10:30) - Bowo
- local repository init
- clone an existing remote
- hidden git directory
- git operations overview:
  * track files areas
  * file states
- config user.name, user.email, colored output
- git operations flow:
  * status
  * add
  * commit
  * diff
  * log
  * checkout
  * reset
  * revert
- HEAD
- .gitignore

## Practical (10:30 - 11:00)
- create a repository
- create a file inside the repository
- stage the file
- commit the file
- edit the file and stage it again
- check log and see the differences
- create another file and add it to .gitignore

## Break (11:00 - 11:15)

## Git and remote repositories (11:15 - 12:00) - Martijn
- distributed git
- view/add remotes
- transferring commits between repositories:
  * fetch
  * merge
  * pull
  * push (-u)
  * clone
- remote protocols:
  * local
  * HTTPS
  * SSH
  * Git protocol
- GitLab

## Lunch (12:00 - 13:00)

## Practical (13:00 - 13:30)
- create a GitLab project
- add the GitLab project as remote for the local repository created during the previously practical
- push to the GitLab remote
- edit some file on GitLab
- do git fetch and merge
- change file locally and push to GitLab

## Data analysis (13:30 - 14:30) - Szymon
- how GitLab might be used to deliver results to researchers and document their work
- Markdown

## Break (14:30 - 14:45)

## Combing changes by merging (14:45 - 15:30) - Martijn
- the git commit graph
  * briefly on branches
- inspecting the commit graph
  * annotated log as an alias
- merging from remotes
  * fast forward merge
  * three-way merge
- basic merge conflict
  * resolve merge conflicts by hand
  * git mergetool
  * aborting a merge conflict

## Practical (15:30 - 16:00)
- clone a GitLab project from one of the neighbours
- check the commit graph
- do a fast-forward merge
- do a three-way merge
- resolve a merge conflict


# What to add?
+ more on branches
+ git clean
+ git stash
+ more on GitHub, GitLab, (Bitbucket?)
  * pull requests
  * ...
+ from the current tips and tricks:
  * git blame
  * git tag
  * git diff -w
  * ammend
  * modifying global ignore
  * commands aliases


# What to remove?
- data analysis

# Next course program

## (10:00 - 10:30) Introduction - 

## (10:30 - 11:15) Git basics - 

## (11:15 - 12:00) Practical 

## (12:00 - 13:00) Lunch 

## (13:00 - 13:45) Collaboration: remotes -

## (13:45 - 14:15) Practical 

## (14:15 - 14:30) Break

## (14:30 - 15:15) Collaboration: merging -

## (15:15 - 15:45) Practical 

## (15:45 - 16:00) Break 

## (16:00 - 16:30) Tips? -

## (15:30 - 16:00) Practical